Как обнаружить строки с китайскими символами в MySQL? - PullRequest
2 голосов
/ 21 марта 2012

У меня есть несколько строк в MySQL, где есть китайские иероглифы.Я хочу удалить эти строки.

Как я могу обнаружить строки с китайскими символами в MySQL?

Ответы [ 3 ]

5 голосов
/ 30 января 2016

Вот таблица "Chinese_Test" содержит китайский символ на моем PhpMyAdmin
Данные:

enter image description here

Структура
enter image description here

обратите внимание, что мой тип сортировки - 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

0 голосов
/ 21 марта 2012

У меня нет ответа, но я предоставлю вам отправную точку: китайские символы будут занимать определенные блоки в наборе символов UTF-8. Пример

Вам потребуется запросить строки, содержащие символы между первой и последней точкой этого блока.Хотя я не могу придумать, как это автоматизировать (т. Е. Запросить символы внутри определенного диапазона, не называя каждый символ явно).

Еще одна непроверенная идея, которая приходит на ум, - это использование iconv() для преобразованияСтрока в специально китайскую кодировку, используя //IGNORE, и посмотреть, остались ли какие-либо данные.Если что-то осталось, строка может содержать китайские символы .... хотя это, вероятно, будет нарушено любыми числами внутри строки,

Это интересная проблема.

0 голосов
/ 21 марта 2012

Если все остальные строки имеют буквенно-цифровые значения, попробуйте следующее:

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

Проверьте результаты перед удалением, используя следующее:

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