MYSQL数据库
数据库1 - 表格 - 表格1
id - int
标题 - utf8_general_ci
价值观 -
1,Bienvenue Chez lesCh’
2,ABC
3,XYZ
数据库2 - 表格 - 表格2
id - int
title - utf8_unicode_ci
价值观 -
1,Bienvenue Chez les Ch'tis
2,ABC
3,QWE
我在上面的两个表中都有标题列表。我想列出不相同的标题。
我尝试了很多不同的东西,但没有运气。
如何比较这些标题?
SELECT database1.table1.title as title1,database2.table2.title as title2
FROM database1.table1 JOIN database2.table2 ON (database1.table1.id =database2.table2)
WHERE database1.table1.title NOT LIKE database2.table2.title COLLATE utf8_general_ci
以上查询的结果:
Bienvenue Chez lesCh’,Bienvenue Chez les Ch'tis
XYZ,QWE
但我只想在下面结果
XYZ,QWE
我想排除法语,我想将其视为相同的标题。
答案 0 :(得分:0)
’
是’
的Mojibake。当以两种不同的方式存储相同的右单引号时出现问题。不是COLLATION
问题。
首先,检查两个表以查看存储的内容:
SELECT HEX(title) FROM database1.table1 WHERE id = 1
你会发现的两个可能的案例是:
C h ... t i s
43 68 E28099 74 69 73 -- correctly encoded with UTF-8
43 68 C3A2 E282AC E284A2 74 69 73 -- "double encoded"
(为了清楚起见,我在HEX中添加了间距。)
如果其中一个表是"双重编码",那么它在INSERTing
期间搞砸了。字符串不比较相等。