如何在SQL查询中使用十六进制值?

时间:2013-10-24 14:22:51

标签: sql teradata

只有Teradata。

我正在测试charhexint。我想在name1字段中找到所有包含“robin”字样(以十六进制表示0072006F00620069006E)的记录。为什么以下不返回任何记录?

SELECT *
FROM table1
WHERE CHAR2HEXINT(name1)  LIKE '%0072006F00620069006E%'


P.S。
当我做的时候

SELECT *
FROM table1
WHERE name1  LIKE '%robin%'

我收到很多记录。

1 个答案:

答案 0 :(得分:1)

有两个可能的原因:

检查name1的字符集,您的搜索字符串是UNICODE,但该列可能是LATIN:

WHERE CHAR2HEXINT(name1)  LIKE '%726F62696E%'

如果列定义为NOT CASESPECIFC并且您的会话处于Teradata模式,则任何比较(包括LIKE)都不会区分大小写,因此也会返回Robin,ROBIN等。当然,CHAR2HEXINT会为aA返回不同的值:

WHERE CHAR2HEXINT(UPPER(name1))  LIKE '%0052004F00420049004E%'