如何在Postgresql中转义下划线

如何在Postgresql中转义下划线,postgresql,escaping,wildcard,postgresql-9.3,Postgresql,Escaping,Wildcard,Postgresql 9.3,在Postgresql中搜索下划线时,字符\uu的文字用法无效。例如,如果要在所有表中搜索以\u by结尾的任何列,以查找更改日志或活动信息,例如更新者,审阅者等,则以下查询几乎可以工作: SELECT table_name, column_name FROM information_schema.columns WHERE column_name LIKE '%_by' 它基本上完全忽略下划线,并返回,就像您搜索了像“%by”这样的。这可能不是所有情况下的问题,但它有可能成为一个问题。如何搜

在Postgresql中搜索下划线时,字符
\uu
的文字用法无效。例如,如果要在所有表中搜索以
\u by
结尾的任何列,以查找更改日志或活动信息,例如
更新者
审阅者
等,则以下查询几乎可以工作:

SELECT table_name, column_name FROM information_schema.columns
WHERE column_name LIKE '%_by'

它基本上完全忽略下划线,并返回,就像您搜索了像“%by”这样的
。这可能不是所有情况下的问题,但它有可能成为一个问题。如何搜索下划线?

您需要使用反斜杠来转义下划线。将示例查询更改为以下内容:

SELECT table_name, column_name FROM information_schema.columns
WHERE column_name LIKE '%\_by'

只是遇到了同样的问题,单个反斜杠也不起作用。我在PostgreSQL社区中找到了此文档,它很有效:

正确的方法是用反斜杠转义下划线。你 实际上,您必须在查询中写入两个反斜杠:

从中选择* foo-where-bar类似“%\\\\u-baz”

第一个反斜杠引用了查询解析器的第二个反斜杠,因此 最终进入系统的是%\\ uBaz,然后诸如此类 函数知道如何处理它

因此,请使用以下内容:

SELECT table_name, column_name FROM information_schema.columns
WHERE column_name LIKE '%\\_by'

源文档:

%
是与
类似的
匹配的通配符<代码>%
=零个或多个,
.
=任何一个字符。我必须做
。。。例如E“%\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\。