db2 специальный символ 0x1A - PullRequest
1 голос
/ 27 июля 2010

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

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

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

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

Ответы [ 4 ]

2 голосов
/ 27 июля 2010

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

select * from data where name like '%' + chr(26) + '%'
1 голос
/ 20 марта 2015

Старая тема, но, тем не менее, актуальная проблема.Моя среда 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 голосов
/ 23 января 2018

В прошлом этот запрос работал для меня на 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 
0 голосов
/ 27 июля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...