早上好,我有一个简单的问题要做:
已更新
我必须进行选择来获取是否有长度与数字不同的记录。我知道我的结果可能是一些记录或只是没有结果,因为将是空的,这是我的查询:
select CASE WHEN id IS null THEN 'no existen' ELSE ID END AS existen
from dvd.cicle
WHERE LENGTH(ID) <> (SELECT MAX(LENGTH(ID)) FROM dvd.cicle )
但我的结果看起来像这样:
如果结果为空,我需要得到文本“no exiten”,或者如果查询给我不同的最大/长度,则需要ID。有人可以帮助我吗?
问候
您提出的问题和您显示的查询不同。
你写
必须进行选择才能获取是否存在长度与数字不同的行
但是查询通常会检查是否存在具有不同 id 长度的行,而不是检查是否存在没有特定 id 长度的行。
那么你真正想要什么?
如果您通常想知道是否存在具有不同长度 id 的行,无论它们的长度是多少,您可以执行以下操作:
select
case when count(distinct length(id)) > 1
then 'exists' else 'not exists' end as existen
from cicle;
如果你想知道某个 id 的长度是否与特定数字不同,你可以这样做(这里,数字是 5):
select
case when count(case when length(id) <> 5 then 1 end) > 0
then 'exists' else 'not exists' end as existen
from cicle;
参见这个 sample fiddle (注意:是的,fiddle 不使用 Oracle 作为 RDBMS,那是因为我通常使用的带有 Oracle DB 的 fiddle 站点当前无法工作,但上面的查询是标准 SQL,将在每个RDBMS,除了 SQL Server,您需要
len
而不是 length
)。