2010-07-27 4 views
1

Как я могу использовать специальный символ типа «→» (0x1A)? Пример для моего запроса:db2 специальный символ 0x1A

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

Я хочу использовать вместо «→» что-то вроде 0x1A.

Я не могу использовать Java или код C#. У меня только SQuirrel для подключения и отправки команд в базу данных.

+1

[связаны] (https://stackoverflow.com/q/17462802/1699210) – bummi

ответ

2

Вы можете использовать Chr() для поиска charater:

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

Это было бы 'CHR()', 'символ()' представляет собой отливку. –

0

Решение 1: Используйте chr(26).

Решение 2: Напишите запрос на Java или на другом языке программирования, который позволяет вам создавать SQL из кусков и где вы можете ввести шестнадцатеричные коды.

0

Старая тема, но актуальная проблема все же. Моя среда DB2 работает на AS400/iSeries и использует EBCDIC вместо ASCII. Я разработал характер из таблицы EBCDIC по адресу lookuptables.com.

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 
Смежные вопросы