我正在使用安装了xampp 1.8.3-2和mysqlserver版本5.6.14的Debian服务器。在旧数据库中,latin1_german2_ci被用作数据库和表的字符排序,因为德语字符如ä,ö,ü,ß等。现在,我必须将表的排序规则转换为utf8_unicode_ci(数据库的整理)还在latin1_german2_ci)。但在那之后,像这样的查询不再产生正确的答案。也就是说,它不仅包含ko
,还包含SELECT * FROM users Where lastname like "%kö%"
。我该如何解决这个问题?
COLLATE
修改:刚刚找到一个使用SELECT * FROM users Where lastname like "%kö%" COLLATE utf8mb4_german2_ci
的解决方案:
SELECT * FROM users Where lastname like "%kö%" COLLATE utf8_german2_ci
但是,必须根据使用的服务器连接排序规则进行调整,因此如果服务器连接排序规则为utf8_unicode_ci,则必须将查询更改为
{{1}}
所以现在我的问题是:有更好/更优雅的方法来解决我的问题吗?数据库中是否有任何选项可以防止这种情况?
答案 0 :(得分:0)
尝试将表的字符集设置为UTF-8并将字符串设置为utf8_ *并确保没有_ci和结尾(_ci用于"不区分大小写"否则)MySQL将都执行大小写和不区分重音的搜索。