特殊的 teradata 子句,Column_Name >= ''
peculiar teradata clause, Column_Name >= ''
我有一个不再在这里工作的人为 teradata 写的一份声明,所以我不能直接问他。
在该语句中,where 中的最后一个子句是:... and Column_Name >= ''
。我不知道该子句应该做什么。
如果重要 Column_name 是 [decimal](7,0) NULL
。
有人可以向我解释一下该条款接受哪些案例,哪些案例被拒绝吗?
对我来说,它应该允许通过所有东西,因为所有东西都是主要的或等于 null
当您将字符串与数值进行比较时,字符串将转换为 FLOAT
,在您的情况下,空字符串 ''
将被视为 0
,因此这只是检查 Column_Name >= 0
并过滤负值和 NULL
的愚蠢方法。你永远不知道这是否真的是写它的人的意图:)
当 >='' 子句应用于字符列时,它将限制空记录。
如果table有2列,一个Region_cd和rank_nr,table中的数据如下:-
select * from databasename.tablename;
*** Query completed. 5 rows found. Two column returned.
*** Total elapsed time was 1 second.
Region | rank_nr
---------- -----------
emea | 1
amr | 2
apac | 3
? | 4
| 5
? is 表示 NULL,region_cd 列中的 space 等级 = 5 不可见
如果我们在此 table 中使用 where 子句作为 Region>='' 进行查询,那么结果将低于 4 行:-
select * from databasename.tablename where Region_cd >='' ;
*** Query completed. 4 rows found. 2 columns returned.
*** Total elapsed time was 1 second.
col1 | rank_nr
---------- -----------
emea | 1
apac | 3
amr | 2
| 5
我有一个不再在这里工作的人为 teradata 写的一份声明,所以我不能直接问他。
在该语句中,where 中的最后一个子句是:... and Column_Name >= ''
。我不知道该子句应该做什么。
如果重要 Column_name 是 [decimal](7,0) NULL
。
有人可以向我解释一下该条款接受哪些案例,哪些案例被拒绝吗?
对我来说,它应该允许通过所有东西,因为所有东西都是主要的或等于 null
当您将字符串与数值进行比较时,字符串将转换为 FLOAT
,在您的情况下,空字符串 ''
将被视为 0
,因此这只是检查 Column_Name >= 0
并过滤负值和 NULL
的愚蠢方法。你永远不知道这是否真的是写它的人的意图:)
当 >='' 子句应用于字符列时,它将限制空记录。
如果table有2列,一个Region_cd和rank_nr,table中的数据如下:-
select * from databasename.tablename;
*** Query completed. 5 rows found. Two column returned.
*** Total elapsed time was 1 second.
Region | rank_nr
---------- -----------
emea | 1
amr | 2
apac | 3
? | 4
| 5
? is 表示 NULL,region_cd 列中的 space 等级 = 5 不可见
如果我们在此 table 中使用 where 子句作为 Region>='' 进行查询,那么结果将低于 4 行:-
select * from databasename.tablename where Region_cd >='' ;
*** Query completed. 4 rows found. 2 columns returned.
*** Total elapsed time was 1 second.
col1 | rank_nr
---------- -----------
emea | 1
apac | 3
amr | 2
| 5