我有了看起來像這樣的條目的數據庫條目:爲什麼我的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中進行了修改。 –