特殊的 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