我希望只获取某一列中包含特定单词的记录,我尝试使用WHERE ... IN (...)
语句,但在这个where子句中Postgres区分大小写。
因此,我尝试使用正则表达式和~*
运算符。
以下是一个SQL代码片段,它返回数据库中的所有列和表,我想限制行,只获取正则表达式中的表。
SELECT ordinal_position as COLUMN_ID, TABLE_NAME, COLUMN_NAME
FROM information_schema.columns
WHERE table_schema = 'public' and table_name ~* 'PRODUCTS|BALANCES|BALANCESBARCODEFORMATS|BALANCESEXPORTCATEGORIES|BALANCESEXPORTCATEGORIESSUB'
order by TABLE_NAME, COLUMN_ID
该正则表达式将获取BALANCES表的所有列以及包含“BALANCES”关键字的表的列。
我希望仅限制结果为完整名称。
\b
表示退格符,就像C语言一样
。您可以使用\y
来仅匹配单词的开头或结尾
。详情请参见这里
。 - Ihor Romanchenko\y
方面并不孤单。正如我所使用的关于***单词边界***的链接中所指出的那样,还有一些工具也在使用它。 - acdcjunior