当前位置:  开发笔记 > 数据库 > 正文

为什么我的LIKE'%\ _'查询会返回所有行,而不仅仅是以下划线结尾?

如何解决《为什么我的LIKE'%\_'查询会返回所有行,而不仅仅是以下划线结尾?》经验,为你挑选了2个好方法。

我目前在Postgres上运行查询:

SELECT * FROM addenda.users WHERE users.username LIKE '%\_' 

但是,然后返回仅以下划线结尾的条目,我得到所有结果,无论它是否包含下划线.

运行下面的查询会返回一个只是下划线的用户名,因此转义确实有效:

SELECT * FROM addenda.users WHERE users.username LIKE '\_' 

并运行以下查询返回一个以特定字母结尾的用户名:

SELECT * FROM addenda.users WHERE users.username LIKE '%s' 

我究竟做错了什么?



1> Stephen Denn..:

你的反斜杠是不是通过PostgreSQL?如果您将字符串传递给另一个将反斜杠视为转义字符的图层(例如Java字符串),则该图层可能会删除反斜杠,您可能需要转义该图层的反斜杠.

你还有更多的单字符用户名吗?如果反斜杠没有通过PostgreSQL,那么它们也会匹配'_'

您可以尝试ESCAPE子句:username LIKE '%!_' ESCAPE '!'



2> Cade Roux..:

"_"是大多数SQL变体中的单字符通配符.如果你想匹配一个真实的"_"角色,你必须逃避它.

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有