我需要找到Oracle数据库中具有与某个单词匹配的属性的所有表。例如,我正在使用:
SELECT TABLE_NAME
, COLUMN_NAME
FROM USER_TAB_COLUMNS
WHERE UPPER(COLUMN_NAME) LIKE '%ING%'
返回:
TABLE1 ING
TABLE2 THIS_ING
TABLE3 ING_FIRST
TABLE5 TESTING
我只想从TABLE1,TABLE2和TABLE3返回结果。当它只是像TESTING这样的字符串的一部分时,我不想要匹配。
我似乎无法得到我需要的东西。
答案 0 :(得分:8)
您可以使用正则表达式查找所需内容:
SELECT TABLE_NAME
, COLUMN_NAME
FROM USER_TAB_COLUMNS
WHERE regexp_like (column_name, '(^|(_)+)ING((_)+|$)')
这将为您提供ING前面有行开头或1个或更多下划线,然后是行尾或1个或更多下划线的列。
答案 1 :(得分:1)
您可以使用REGEXP_LIKE。我不是非常擅长正则表达式,比我更好的人可以弄清楚如何在一个表达式中开始一个单词或_
SELECT TABLE_NAME
, COLUMN_NAME
FROM USER_TAB_COLUMNS
WHERE
REGEXP_LIKE(COLUMN_NAME,'[_]ING')
or
REGEXP_LIKE(COLUMN_NAME,'^ING')