在單引號我有這個疑問:MySQL查詢與where子句
SELECT * FROM tbname WHERE LCASE(title) LIKE '%l\'infinito%'
到表中的值包含斜槓引號之前。 爲什麼查詢返回沒有結果?
感謝
在單引號我有這個疑問:MySQL查詢與where子句
SELECT * FROM tbname WHERE LCASE(title) LIKE '%l\'infinito%'
到表中的值包含斜槓引號之前。 爲什麼查詢返回沒有結果?
感謝
試試這個:
SELECT * FROM tbname WHERE LCASE(title) LIKE '%l\\\'infinito%'
逃逸是正確的。你其實並不需要LCASE
因爲LIKE
不區分大小寫(至少不是在我的Linux系統):
mysql> SELECT 'L\'Infinito' LIKE '%l\'infinito%';
+------------------------------------+
| 'L\'Infinito' LIKE '%l\'infinito%' |
+------------------------------------+
| 1 |
+------------------------------------+
1 row in set (0.00 sec)
也許你要搜索L'Infinito的,以「N」。或者,也許標題似乎包含單引號,但它是那些從來沒有足夠該死的Windows Word反向英文引號之一。
或者在引用後面的標題中可能有空格。在許多字體中,這不是立即可見的。
L' infinito
您可以搜索使用 '%ifinito%'(或 '%INFINITO%'),並確認發現的行確實包含一個ASCII報價?
UPDATE
...最後,也許數據庫是錯誤的。即:
mysql> CREATE TABLE catalogo (title varchar (32));
mysql> INSERT INTO catalogo VALUES ('L\'Infinito');
mysql> SELECT * FROM catalogo;
+------------+
| title |
+------------+
| L'Infinito |
+------------+
如果像以前一樣運行相同SELECT
,並返回MySQL的L'Infinito的沒有逃脫?因爲如果你不是
+-------------+
| title |
+-------------+
| L\'Infinito |
+-------------+
然後標題已經保存錯誤兩次逃脫報價跡象。因此,L和報價單之間有一個轉義符號,您必須搜索以「中和」該錯誤。請參閱
L\\\'Infinito
以「中和」錯誤。
我試圖 SELECT標識,TITOLO FROM catalogo WHERE LCASE(TITOLO)LIKE '%\從' INFINITO%' 刪除字符 「l」 的標題和我有一個結果... – user1636103
您可能在字符串中有一個空格。 *發佈結果!* :-) – LSerni
它可能是'''而不是'''。 – tadman
下面的查詢將回答你的問題:
string s="'infinito";
s=s.Replace("'", "''");
SELECT * FROM tbname WHERE LCASE(title) LIKE '%s%'
嗨,返回錯誤1064 ... – user1636103
@ user1636103顯示錶'tbname'的一些價值。 – hims056
SELECT id,titolo FROM catalogo WHERE LCASE(titolo)LIKE'%l'infinito%' – user1636103