特殊teradata子句,列名称>;='';

特殊teradata子句,列名称>;='';,teradata,Teradata,我有一个不再在这里工作的人为teradata写的statament,所以我不能直接问他。 在此语句中,where中的最后一个子句是:。。。和Column\u Name>=''。我不知道该子句应该做什么。 如果有关系,列名称为[十进制](7,0)NULL 有人能向我解释一下,该条款接受哪些案件,拒绝哪些案件吗? 对我来说,它应该允许所有内容,因为所有内容都是主要的或等于null当您将字符串与数值进行比较时,字符串将转换为FLOAT,在您的情况下,空字符串'被视为0,因此,这只是一种愚蠢的方法来检查

我有一个不再在这里工作的人为teradata写的statament,所以我不能直接问他。
在此语句中,where中的最后一个子句是:
。。。和Column\u Name>=''
。我不知道该子句应该做什么。
如果有关系,列名称为
[十进制](7,0)NULL

有人能向我解释一下,该条款接受哪些案件,拒绝哪些案件吗?

对我来说,它应该允许所有内容,因为所有内容都是主要的或等于
null

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

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

如果表中有两列,一列为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,秩=5的区域_cd列中的空格不可见

如果我们在此表中使用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

当您将字符串与数值进行比较时,字符串将转换为
浮点值
,在您的情况下,空字符串
'
将被视为
0
,因此这只是检查
列名称>=0
并过滤负值和
NULL
的愚蠢方法。你永远不知道这是否真的是作者的意图:)哦,好吧,谢谢,我想可能是这样的,但我们没有任何teradata服务器(这是一个复杂的情况)来测试它到底是如何运行的。如果你想写下来作为答案,我很乐意接受!