1

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

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

4

2 回答 2

8

您可以使用正则表达式来查找您想要的内容:

SELECT TABLE_NAME
     , COLUMN_NAME
  FROM USER_TAB_COLUMNS
 WHERE regexp_like (column_name, '(^|(_)+)ING((_)+|$)')

这将为您提供以 ING 开头或 1 个或多个下划线开头的列,然后是行尾或 1 个或多个下划线。

于 2012-04-26T16:18:11.107 回答
1

您可以使用 REGEXP_LIKE。我不太擅长正则表达式,比我更好的人可以弄清楚如何在一个表达式中做一个单词的开头或 _

SELECT TABLE_NAME
 ,     COLUMN_NAME
FROM USER_TAB_COLUMNS
WHERE
REGEXP_LIKE(COLUMN_NAME,'[_]ING')
or
REGEXP_LIKE(COLUMN_NAME,'^ING')

演示

于 2012-04-26T16:15:36.900 回答