我在MySQL中有一些有中文字符的行。我想删除这些行。
如何在MySQL中检测带有中文字符的行?
答案 0 :(得分:5)
这是表" Chinese_Test"在我的PhpMyAdmin上包含汉字 数据:强>
注意我的Collation类型是utf8,因此让我们来看看utf8表中的汉字。 http://www.ansell-uebersetzungen.com/gbuni.html
注意汉字是从E4到E9,因此我们使用代码
select number
from Chinese_Test
where HEX(contents) REGEXP '^(..)*(E[4-9])';
以下是结果:
答案 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
将字符串转换为特定的中文编码,并查看是否还有任何数据。如果剩下任何东西,字符串可能包含中文字符....虽然这可能会被字符串中的任何数字打乱,
这是一个有趣的问题。