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."
我有这个问题:
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."