【发布时间】:2023-03-11 11:16:01
【问题描述】:
我正在使用一个使用德语名称的数据库,即Fürst。现在我构建了一个带有搜索字段的 HTML 表单。使用htmlentities 并在查询之前输入了一些验证没有“坏东西”的测试,然后输入html_entity_decode。一个简单的查询将如下所示:
SELECT * FROM user_table WHERE firstname LIKE "%fü%" OR lastname LIKE "%fü%"
然而,这个发现不仅是Fürst,还有Furt。我怎样才能解决这个问题?数据库和表格位于utf8_unicode_ci 中,并且必须保持这种状态。
【问题讨论】:
-
在比较中添加一个 collate 子句,例如
WHERE firstname collate german_ci like...。 -
你能说得更具体些吗?没有
german_ci。当我使用latin1_german2_ci时,它会显示:#1253 - COLLATION 'latin1_german2_ci' is not valid for CHARACTER SET 'utf8'。当我尝试utf8_unicode_ci时,得到的结果与原帖中的结果相同 -
我不知道您的 dbms 产品的排序规则名称。也许你应该标记你正在使用的 dbms,你会得到一个适合你的答案。
-
服务器在 debian8.3 上运行 phpmyadmin 4.5.2 和 10.1.9-MariaDB。这是你的意思吗?
标签: mysql sql mariadb special-characters sql-like