mysql - 如何在 MySql 中将拉丁字符转换为相应的 unicode 转义序列?

标签 mysql encoding

首先让我告诉你,我使用的字符集和排序规则是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) ,'%') 

我尝试过使用QUOTECONVERTCAST,并且还进行了很多谷歌搜索,但我发现的都是与我需要(这些帖子解释了如何将转义序列转换为人类可读的内容)。

提前致谢,

 Adrián

最佳答案

您应该将 ñ 作为十六进制 C3B1 存储在 utf8 列中。通过执行 SELECT HEX(col) ... 进行检查。如果它是 &...; (大约有 3 种可能的方式来表示“html 实体”),那么当 INSERTing文本。

escapeUtf8() 只会使情况变得复杂;那里不需要任何功能。

关于mysql - 如何在 MySql 中将拉丁字符转换为相应的 unicode 转义序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33107752/

相关文章:

java - 如何在 Java 应用程序中设置 SQL 数据库连接?

mysql - 使用另一个表更新mysql表多列

perl - 使用 HTML::TreeBuilder as_HTML 后编码损坏

Javascript 编码对 JSON 无效

java - 如何以编程方式在IntelliJ IDEA中设置全局gradle设置(gradle vm选项)?

mysql - 通过sql查询分组的时间段

java - 如何在JETTY服务器上部署war文件

c++ - boost::filesystem::path 与 boost::filesystem::wpath

python - "UnicodeEncodeError: ' charmap ' codec can' t 编码字符”尝试通过 openpyxl 解析 .xlsx 时

PHP 登录表单不会使用正确的凭据登录用户