首先让我告诉你,我使用的字符集和排序规则是utf8_general_ci。
作为示例,我有两个表 A 和 B。
表 A 有一个列(我们称之为“columnX”)。在表 A 的任何行中,columnX 的值都可能包含拉丁字符,例如“niño”(英语中的意思是“boy”)。
表 B 有一个列(我们称之为“columnY”),我知道该列可能包含“niño”作为其值的一部分,例如“es un niño bueno”(英语中的“他是个好男孩”),但 'ñ' 将被转义,因为我知道 columnY 包含 JSON 字符串,因此字符串文字将被编码为 'es un ni\u00f1o bueno'。
我需要查找表 A 中列 A.columnX 包含在任意 B.columnY 中的所有行。我需要一个将 al A.columnX 转换为其相应转义版本的函数。类似于以下代码:
SELECT * FROM A
INNER JOIN B
ON B.columnY LIKE CONCAT('%', escapeUtf8(A.columnX) ,'%')
我尝试过使用QUOTE
、CONVERT
、CAST
,并且还进行了很多谷歌搜索,但我发现的都是与我需要(这些帖子解释了如何将转义序列转换为人类可读的内容)。
提前致谢,
Adrián
最佳答案
您应该将 ñ
作为十六进制 C3B1
存储在 utf8 列中。通过执行 SELECT HEX(col) ...
进行检查。如果它是 &...;
(大约有 3 种可能的方式来表示“html 实体”),那么当 INSERTing
文本。
escapeUtf8()
只会使情况变得复杂;那里不需要任何功能。
关于mysql - 如何在 MySql 中将拉丁字符转换为相应的 unicode 转义序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33107752/