db2特殊字符0x1A

时间:2010-07-27 12:07:06

标签: sql db2

如何搜索“→”(0x1A)这样的特殊字符? 我的查询的一个例子是:

select * from Data where Name like '%→%'

我想用“→”代替0x1A。

我不能使用任何Java或C#代码。我只是让SQuirrel连接并向数据库发送命令。

4 个答案:

答案 0 :(得分:2)

您可以使用chrome()搜索字符:

select * from data where name like '%' + chr(26) + '%'

答案 1 :(得分:1)

旧话题,但仍是当前的问题。我的DB2环境在AS400 / iSeries上运行,并使用EBCDIC而不是ASCII。我在lookuptables.com的EBCDIC表格中找到了这个角色。

ASCII 0x1a转换为SUB,SUB转换为EBCDIC 0x3f。

在SQL中使用它看起来像这样:

select productDescription
from productsTable
where productDescription like '%' || x'3F' || '%'`

答案 2 :(得分:0)

解决方案1:使用chr(26)

解决方案2:使用Java或其他编程语言编写查询,从而可以从多个部分构建SQL,并在其中输入十六进制代码。

答案 3 :(得分:0)

此查询过去曾在iSeries DB2上使用过。

select * from db/table where posstr(field, x'3F') > 0 

麻烦的是你必须确定你在字符串中搜索的十六进制值。我有一个类似的情况,我确信该字符的十六进制代码是x' 3F,但是当我对不可见的字符进行子字符串时,它实际上是x' 22。你可能想要挑出给你问题的角色,看看它的价值是什么。

select hex(substr(field, 21,1)) from db/table where posstr(field, 'StringBeforeCharacter') > 0