我对 Teradata 和 SQL 环境非常陌生。我正在尝试使用 ISNULL(COLUMNNAME,0) 从 teradata 中的 sql 表中删除所有空值。但它给出了“数据类型与定义的数据类型名称不匹配”的错误。另外,想知道是否有任何方法可以一次删除所有 NULL,而不是按列一次又一次地编写上述查询。
DecafDb
Asked:
2018-05-15 20:02:40 +0800 CST
我where NULL IS NULL
在代码中看到了很多类型条件,我很好奇其中可能涉及的开销。
所以SELECT * FROM table WHERE field = 'TERM' AND (NULL IS NULL OR anotherField = NULL)
在一张桌子上给出 > 10+ 百万条记录。是否有足够的关注强制取消NULL IS NULL
条件或差异可以忽略不计?
开发人员正在使用此语法编写处理可选查询参数的通用 SQL。我个人认为,如果未提供参数,则应该将其排除在查询之外,因为它看起来是多余的。
我对此进行了一些谷歌搜索,但似乎找不到答案,也许我的搜索词似乎很常见,但已关闭。
Peter PitLock
Asked:
2014-07-04 23:03:31 +0800 CST
A B C Equal
1 1 1 Y
2 2 NULL N
嗨,我有 3 列需要比较:A、B、C 列。如果这 3 列相同,则列 'Equal' = 'Y'
但是,如果一列为空,则必须将其排除在比较之外,例如,在示例中第 2 行为空,但其余列都相同,因此 Equal 应该为 yes - 因为所有非空值都是平等的
http://www.sqlfiddle.com/#!3/dedd9/2
我以为我可以使用 isnull(C,A) = A 但它不起作用。有人可以帮忙吗
declare @t table
(
A decimal,B decimal, C decimal
)
insert Into @t(A,B,C) values (1,1,1)
insert Into @t(A,B) values (2,2)
select A,B,C,'Equal' = case when ISNULL(A,B) = B and ISNULL(B,C) = C and ISNULL(C,A) = A then 'Y' else '' end
from @t