我該如何搜索「→」(0x1A)這樣的特殊字符? 一種用於我的查詢的例子是:db2特殊字符0x1A
select * from Data where Name like '%→%'
我想使用的,而不是「→」像0x1A的。
我不能使用任何Java或C#代碼。我只需要SQuirrel連接併發送命令到數據庫。
我該如何搜索「→」(0x1A)這樣的特殊字符? 一種用於我的查詢的例子是:db2特殊字符0x1A
select * from Data where Name like '%→%'
我想使用的,而不是「→」像0x1A的。
我不能使用任何Java或C#代碼。我只需要SQuirrel連接併發送命令到數據庫。
您可以使用CHR()來搜索系統字符:
select * from data where name like '%' + chr(26) + '%'
這將是'CHR()','炭()'是鑄造。 – 2010-07-27 12:10:42
解決方法1:使用chr(26)
。
解決方案2:使用Java或其他編程語言編寫查詢,該編程語言允許您從多個部分構建SQL,並在其中輸入十六進制代碼。
舊主題,但仍是一個當前問題。我的DB2環境在AS400/iSeries上運行,並使用EBCDIC而不是ASCII。我從的EBCDIC表中找出了角色。
ASCII 0x1a轉換爲SUB,SUB轉換爲EBCDIC 0x3f。
使用在SQL是這樣的:
select productDescription
from productsTable
where productDescription like '%' || x'3F' || '%'`
此查詢在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
[相關](https://stackoverflow.com/q/17462802/1699210) – bummi 2017-11-30 07:17:09