如何在MySQL中检测带有中文字符的行?

时间:2012-03-20 21:18:49

标签: mysql non-ascii-characters

我在MySQL中有一些有中文字符的行。我想删除这些行。

如何在MySQL中检测带有中文字符的行?

3 个答案:

答案 0 :(得分:5)

这是" Chinese_Test"在我的PhpMyAdmin上包含汉字 数据:

enter image description here

<强>结构
enter image description here

注意我的Collat​​ion类型是utf8,因此让我们来看看utf8表中的汉字。 http://www.ansell-uebersetzungen.com/gbuni.html

注意汉字是从E4到E9,因此我们使用代码

select number 
from Chinese_Test
where HEX(contents) REGEXP '^(..)*(E[4-9])';

以下是结果:

enter image description here

答案 1 :(得分:0)

如果所有其他行都包含字母数字值,请尝试以下操作:

DELETE FROM  tableName WHERE NOT columnToCheck REGEXP '[A-Za-z0-9.,-]';

使用以下内容检查删除前的结果:

SELECT * FROM tableName WHERE NOT columnToCheck REGEXP '[A-Za-z0-9.,-]';

答案 2 :(得分:0)

我没有答案,但为您提供了一个起点:中文字符将占用UTF-8字符集中的某些块。 Example

您必须查询包含该块的第一个点和最后一个点之间字符的行。我想不出一种自动化的方法(即查询某个范围内的字符而不明确命名每个字符)。

另一个未经考虑的想法是使用iconv()使用//IGNORE将字符串转换为特定的中文编码,并查看是否还有任何数据。如果剩下任何东西,字符串可能包含中文字符....虽然这可能会被字符串中的任何数字打乱,

这是一个有趣的问题。