只有Teradata。
我正在测试charhexint
。我想在name1字段中找到所有包含“robin”字样(以十六进制表示0072006F00620069006E)的记录。为什么以下不返回任何记录?
SELECT *
FROM table1
WHERE CHAR2HEXINT(name1) LIKE '%0072006F00620069006E%'
的 P.S。
当我做的时候
SELECT *
FROM table1
WHERE name1 LIKE '%robin%'
我收到很多记录。
答案 0 :(得分:1)
有两个可能的原因:
检查name1
的字符集,您的搜索字符串是UNICODE,但该列可能是LATIN:
WHERE CHAR2HEXINT(name1) LIKE '%726F62696E%'
如果列定义为NOT CASESPECIFC并且您的会话处于Teradata模式,则任何比较(包括LIKE)都不会区分大小写,因此也会返回Robin,ROBIN等。当然,CHAR2HEXINT会为a
和A
返回不同的值:
WHERE CHAR2HEXINT(UPPER(name1)) LIKE '%0052004F00420049004E%'