我需要从数据库中找到Lämmönmyyntipalvelut这个词。只是,在数据库中,它位于一个字段中,其值是一个PHP数组,使用json_encode()转换为JSON,因此特殊字符被分成十六进制unicode。
所以我的查询是
SELECT * FROM table WHERE (services LIKE '%Lämmönmyyntipalvelut%')
没有结果。没有惊喜。接下来,使用转换的特殊字符进行查询:
SELECT * FROM table WHERE (services LIKE '%L\u00e4mm\u00f6nmyyntipalvelut%')
没有结果,我想知道为什么。接下来我测试了只查询特殊字符:
SELECT * FROM table WHERE (services LIKE '%\u00e4%')
找到应该找到的东西。接下来我开始添加东西(L到开头)以查看它出错的地方:
SELECT * FROM table WHERE (services LIKE '%L\u00e4%')
没有结果。另一个测试:
SELECT * FROM table WHERE (services LIKE '%\u00e4mm%')
找到应该找到的东西。
所以我的结论是反斜杠在某种程度上弄乱了,但我不明白怎么回事?
修改
服务字段的确切内容:
["Neuvonta","L\u00e4mm\u00f6nmyyntipalvelut",
"Mets\u00e4-\/energiapuunkorjuupalvelut"]
确切查询:
SELECT id, uid, company_name, services, logo FROM rekisteroeidy_toimijaks
WHERE
(services LIKE '%L\u00e4mm\u00f6nmyyntipalvelut%' AND
services LIKE '%Mets\u00e4-\/energiapuunkorjuupalvelut%')
ORDER BY company_name ASC
我添加了一些换行符以帮助提高可读性。