SQL搜索字符串中的特定值

时间:2012-04-26 15:35:20

标签: sql string oracle search

我需要找到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这样的字符串的一部分时,我不想要匹配。

我似乎无法得到我需要的东西。

2 个答案:

答案 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')

DEMO