2010-07-27 85 views
1

我該如何搜索「→」(0x1A)這樣的特殊字符? 一種用於我的查詢的例子是:db2特殊字符0x1A

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

我想使用的,而不是「→」像0x1A的。

我不能使用任何Java或C#代碼。我只需要SQuirrel連接併發送命令到數據庫。

+1

[相關](https://stackoverflow.com/q/17462802/1699210) – bummi 2017-11-30 07:17:09

回答

2

您可以使用CHR()來搜索系統字符:

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

這將是'CHR()','炭()'是鑄造。 – 2010-07-27 12:10:42

0

解決方法1:使用chr(26)

解決方案2:使用Java或其他編程語言編寫查詢,該編程語言允許您從多個部分構建SQL,並在其中輸入十六進制代碼。

0

舊主題,但仍是一個當前問題。我的DB2環境在AS400/iSeries上運行,並使用EBCDIC而不是ASCII。我從的EBCDIC表中找出了角色。

ASCII 0x1a轉換爲SUB,SUB轉換爲EBCDIC 0x3f。

使用在SQL是這樣的:

select productDescription 
from productsTable 
where productDescription like '%' || x'3F' || '%'` 
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