我目前对Postgres的查询运行:为什么我的LIKE'% _'查询返回所有行,而不只是那些以下划线结尾的行?
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'
我在做什么错?
我直接在服务器上运行查询,所以反斜杠正在通过。我只是尝试使用ESCAPE命令,这使它工作正是我想要的! – 2009-01-27 11:44:15
在准备好的语句中插入字符串时,`\ _`匹配下划线字符,但是当sql语句具有字符串字面值时,您需要`\\ _`来代替。我猜这是因为第一个'\`在字符串字面级别转义了第二个'\',然后在postgres级别,它在字符串中看到'\ _`,并将其与下划线字符相匹配。 – 2015-01-26 19:09:13