SQL 如何 SELECT 所有 utf8mb4 字符?

SQL how to SELECT all utf8mb4 characters?

我有这个问题:

SELECT count(*) from TABLE WHERE LENGTH(COLUMN) !=CHAR_LENGTH(COLUMN);

如果计算 returns 一个大于零的值,它告诉我某行中有非 ASCII 字符。

我怎么知道 TABLE 中是否有 utf8mb4 字符?

有没有办法查询所有utf8mb4字符?

这取决于你所说的 "utf8mb4 characters" 是什么意思。这句话完全由"utf8mb4 characters"组成。这句话完全由"ascii"个字符组成。

假设您的意思是 "non-ASCII" 列是 CHARACTER SET utf8mb4,那么您的查询应该可以正常工作。

此技术适用于任何多字节字符集,例如 utf8、big5 等。它不适用于单字节字符集,例如 latin1、latin5 等。

如果您想从列中提取非 ascii 字节,最好使用某些应用程序语言来完成。它可能有一种直接的方法,或者您可以获取 HEX 并使用正则表达式 [CDEF].

查找一对十六进制

如果您的意思是 "utf8mb4" 而不是 "utf8",那么十六进制将是 F. 并且可以通过

发现该行
HEX(col) RLIKE "^(..)*F."