我有了看起来像这样的条目的数据库条目:为什么我的LIKE语句与'\ _'匹配失败?
id | name | code_set_id
我有这个特殊的条目,我需要找到:
674272310 | raphodo/qrc_resources.py | 782732
在我的Rails应用(2.3.8),我有一个声明,评估为:
SELECT * from fyles WHERE code_set_id = 782732 AND name LIKE 'raphodo/qrc\\_resources.py%';
从阅读上面的查询是正确的。这应该是正确的双转义下划线。但是,此查询在数据库中找不到记录。这些查询将:
SELECT * from fyles WHERE code_set_id = 782732 AND name LIKE 'raphodo/qrc\_resources.py%';
SELECT * from fyles WHERE code_set_id = 782732 AND name LIKE 'raphodo/qrc_resources.py%';
我在这里错过了什么吗?为什么第一个SQL语句找不到正确的条目?
根据[文档](https://www.postgresql.org/docs/current/static/functions-matching.html):'要匹配文字下划线或百分号而不匹配其他字符,则相应的字符在模式中必须以转义字符开头。“是什么让你相信你应该加倍反斜杠?另外,没有任何反斜杠的查询会匹配太多的字符串,因为'_'代表'任何字符'。 – Marth
@地球它比这更复杂一点。 PostgreSQL支持标准的字符串和E字符串,后者支持C风格的反斜杠,并且曾经是默认的,但是在PostgreSQL 9.1中进行了修改。 –