2010-07-27 9 views
1

Comment puis-je rechercher un caractère spécial comme "→" (0x1A)? Un exemple pour ma requête est:db2 caractère spécial 0x1A

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

Je veux utiliser au lieu de « → » quelque chose comme 0x1A.

Je ne peux pas utiliser de code Java ou C#. J'ai juste SQuirrel pour se connecter et envoyer des commandes à la base de données.

+1

[liées] (https://stackoverflow.com/q/17462802/1699210) – bummi

Répondre

2

Vous pouvez utiliser chr() pour rechercher le charater:

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

Ce serait 'chr()', 'char()' est un casting. –

0

Solution 1: Utilisez chr(26).

Solution 2: Écrivez la requête en Java ou dans un autre langage de programmation qui vous permet de construire le SQL à partir de pièces et où vous pouvez entrer des codes hexadécimaux.

0

Ancien sujet, mais un problème actuel néanmoins. Mon environnement DB2 fonctionne sur AS400/iSeries et utilise EBCDIC au lieu de ASCII. J'ai travaillé sur le personnage de la table EBCDIC au lookuptables.com.

ASCII 0x1a traduit en SUB, et SUB traduit en EBCDIC 0x3f.

L'utilisation que dans SQL ressemble à ceci:

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

Cette requête a travaillé pour moi dans le passé sur iSeries DB2.

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

Problème, vous devez être certain de la valeur hexadécimale que vous recherchez dans la chaîne. J'ai eu une situation similaire où j'étais sûr que le code hexadécimal du personnage était x'3F, mais quand je sous-chausse le caractère non-visible c'était en fait x'22. Vous voudrez peut-être choisir le personnage qui vous pose le problème et voir quelle est sa valeur.

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