DB2选择查询来查找表名以'_H'结尾

问题描述:

我有一个要求是选择所有以'_H'结尾的表名。 我试过下面的查询,但它给了我所有的表名以'H'结尾。DB2选择查询来查找表名以'_H'结尾

请帮我查询以'_H'结尾的表名。

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

YFS_PRICE_MATCH - >这不是查询结果。

YFS_PROMOTION_AWARD_H - >这是预期的结果。

+0

'_'是DB2中'''的通配符等效项。尝试用'\ _' – Jens

+0

Hi Jens, 感谢您的回复。 我尝试了以下所有模式,但结果集为空。 '%\ _ H' '\ _H' '\\ _ H' '%\\ _ H' – Lakshmikanth

+0

请阅读:https://www.ibm.com/support/knowledgecenter/en/SSEPEK_11.0.0/sqlref/ src/tpc/db2z_likepredicate.html也许这有助于 – Jens

在ANSI SQL中,可以使用escape子句来搜索通配符,以获得所需的结果。

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

DB2/z,另一个选择可以是使用如下的正当性短形式。

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

在上述两种查询x被用作escape字符。你可以根据你的数据选择任何一种。

希望这会有所帮助。

+0

感谢您的答案。 下面一个为我工作。 SELECT TABNAME FROM SYSIBMADM.ADMINTABINFO其中tabname如'%x_h'转义'x'; 平台:AIX中的DB2 10.5 – Lakshmikanth

在Db2和其他一些SQL数据库系统中,字符?_表示LIKE表达式中的通配符。要使用_?作为常规角色,您需要将其转义。在Db2中,转义字符是plus sign (+) on Db2 for z/OSbackslash (\) on Db2 (Linux, UNIX, Windows)。因此,根据平台的不同,您的表情看起来像 %+_H%\_H

+0

感谢您的更新。 – Lakshmikanth