我需要从数据库中找到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
我添加了一些换行符以提高可读性。