特殊的teradata子句,Column_Name> =''

时间:2016-04-14 11:02:31

标签: teradata

我有一个不再在这里工作的人为teradata写的信息,所以我不能直接问他。
在这个statament中,where的最后一个子句是:... and Column_Name >= ''。我不清楚该子句应该做什么。
如果重要,Column_name是[decimal](7,0) NULL

有人可以向我解释哪些案件被接受,哪些案件被该条款拒绝? 对我而言,由于一切都很重要或等于null

,因此接缝应该允许所有东西掉落

2 个答案:

答案 0 :(得分:1)

将字符串与数值进行比较时,字符串将转换为FLOAT,在您的情况下,空字符串''将被视为0,因此这只是一个愚蠢的检查Column_Name >= 0并过滤负值和NULL的方法。你永远不知道这是不是写这个人的意图:)

答案 1 :(得分:0)

当在字符列上应用> =''子句时,它将限制空记录。

如果表格有2列,则一个Region_cd& rank_nr和表中的数据如下: -

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列中的rank = 5的空格不可见

如果我们在这个表中查询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