Joe*_*e M 19 postgresql escaping wildcard postgresql-9.3
在Postgresql中搜索下划线时,字符的字面使用_不起作用.例如,如果你想搜索该结束了在任何列所有的表_by,这样的事情更改日志或活动信息,例如updated_by,reviewed_by等等,下面的查询工作差不多:
SELECT table_name, column_name FROM information_schema.columns
WHERE column_name LIKE '%_by'
Run Code Online (Sandbox Code Playgroud)
它基本上完全忽略了下划线并返回,就像你搜索了一样LIKE '%by'.这在所有情况下都可能不是问题,但它有可能成为一个问题.如何搜索下划线?
Joe*_*e M 22
你需要使用反斜杠来逃避下划线.将示例查询更改为以下内容:
SELECT table_name, column_name FROM information_schema.columns
WHERE column_name LIKE '%\_by'
Run Code Online (Sandbox Code Playgroud)
刚遇到同样的问题,单个反斜杠也不起作用。我在 PostgreSQL 社区上找到了这个文档并且它有效:
正确的方法是用反斜杠转义下划线。您实际上必须在查询中写入两个反斜杠:
select * from foo where bar like '%\\_baz'
第一个反斜杠引用查询解析器的第二个反斜杠,因此系统内部最终是 %\_baz,然后 LIKE 函数知道如何处理它。
因此使用这样的东西:
SELECT table_name, column_name FROM information_schema.columns
WHERE column_name LIKE '%\\_by'
Run Code Online (Sandbox Code Playgroud)
源文档:https : //www.postgresql.org/message-id/10965.962991238%40sss.pgh.pa.us
| 归档时间: |
|
| 查看次数: |
12263 次 |
| 最近记录: |