在Postgresql中搜索下划线时,直接使用该字符 _
不起作用。例如,如果要在所有表中搜索任何以结尾的列 _by
,例如改变日志或活动信息,例如 updated_by
, reviewed_by
等等,以下查询几乎可行:
SELECT table_name, column_name FROM information_schema.columns
WHERE column_name LIKE '%_by'
它基本上完全忽略了下划线并返回,就像你搜索了一样 LIKE '%by'
。这在所有情况下都可能不是问题,但它有可能成为一个问题。如何搜索下划线?
你需要使用反斜杠来逃避下划线。将示例查询更改为以下内容:
SELECT table_name, column_name FROM information_schema.columns
WHERE column_name LIKE '%\_by'
刚遇到同样的问题,单个反斜杠也不能正常工作。我在PostgreSQL社区上找到了这个文档并且它有效:
正确的方法是用反斜杠转义下划线。您
实际上必须在查询中写两个反斜杠:
选择*来自
像'%\\ _ baz'这样的酒吧
第一个反斜杠引用查询解析器的第二个反斜杠,所以
最终在系统内部的是%\ _ baz,然后是LIKE
函数知道该怎么做。
因此使用这样的东西:
SELECT table_name, column_name FROM information_schema.columns
WHERE column_name LIKE '%\\_by'
来源文件: https://www.postgresql.org/message-id/10965.962991238%40sss.pgh.pa.us