2017-10-06 12 views
0

J'ai une exigence pour sélectionner tous les noms de table se termine par «_H». J'ai essayé ci-dessous la requête, mais il me donne tous les noms de table se termine par «H».DB2 sélectionnez la requête pour trouver les noms de tables se termine par «_H»

S'il vous plaît aidez-moi à interroger les noms de tables se termine par «_H».

db2 "SELECT TABNAME FROM SYSIBMADM.ADMINTABINFO where tabname like '%_H' with ur" 

YFS_PRICE_MATCH -> ceci n'est pas attendu dans les résultats de la requête.

YFS_PROMOTION_AWARD_H -> Ce résultat est attendu.

+0

'_' est un équivalent générique pour'? 'Dans DB2. essayer d'y échapper avec '\ _' – Jens

+0

Salut Jens, Merci pour la réponse. J'ai essayé tous les modèles ci-dessous mais le jeu de résultats est vide. '% \ _ H' '\ _H' '\\ _ H' '% \\ _ H' – Lakshmikanth

+0

lire ici: https://www.ibm.com/support/knowledgecenter/en/SSEPEK_11.0.0/sqlref/ src/tpc/db2z_likepredicate.html peut-être cela aide – Jens

Répondre

0

En langage SQL ANSI, vous pouvez utiliser la clause escape pour rechercher un caractère générique comme ci-dessous pour obtenir le résultat souhaité.

SELECT TABNAME FROM SYSIBMADM.ADMINTABINFO where tabname like '%x_h' escape 'x'; 

dans DB2/z, une autre option peut être d'utiliser la forme courte de propriété comme ci-dessous.

SELECT TABNAME FROM SYSIBMADM.ADMINTABINFO where tabname like {escape 'x'} '%x_h'; 

Dans les deux requêtes ci-dessus x est utilisé comme escape caractère. vous pouvez en choisir en fonction de vos données.

Espérons que cela aidera.

+0

Merci pour la réponse. Ci-dessous un travaillé pour moi. CHOISISSEZ TABNAME FROM SYSIBMADM.ADMINTABINFO où le nom de tabulation '% x_h' s'échappe de 'x'; Plate-forme: DB2 10.5 dans AIX – Lakshmikanth

0

Dans Db2 et d'autres systèmes de bases de données SQL et les caractères ?_ désignent un caractère générique dans l'expression LIKE. Pour utiliser le _ ou le ? en tant que caractère normal, vous devez leur échapper. Dans Db2, le caractère d'échappement est le plus sign (+) on Db2 for z/OS ou le backslash (\) on Db2 (Linux, UNIX, Windows). Ainsi, en fonction de la plate-forme, votre expression ressemblerait à %+_H ou %\_H.

+0

Merci pour la mise à jour. – Lakshmikanth