Я пытаюсь удалить смайлики в запросе Select. Я использую MariaDB 10.3.14.
Вот что я придумал до сих пор, но это не работает. Он повторяет всю строку.
SELECT REGEXP_REPLACE("<çşığ_lorem?ipsum?dolor", '/([\x10000-\x10FFFF]+)/g', '')
В фактической строке будут некоторые неанглийские, даже некоторые HTML-теги.
Чего я хочу добиться от этой строки, так это <çşığ_loremipsumdolor
.
Как удалить эмодзи из строки с помощью MariaDB 10.3?
Заранее спасибо,
Ваше регулярное выражение выглядит правильно. Я думаю, что проблема здесь в самой MariaDB. Существует подтвержденная проблема, связанная с основной причиной: МДЭВ-11777.
В качестве уродливого обходного пути вы можете преобразовать текст в utf8 (см. это обсуждение для получения дополнительной информации о том, почему это работает). Это покажет смайлики и другие символы как ?
.
После этого вы просто удаляете ?
.
Итак, как полный пример:
SELECT REGEXP_REPLACE(convert('<çşığ_lorem?ipsum?dolor' USING utf8),'\\?','');
Это даст вам <çşığ_loremipsumdolor
.
Это, конечно, также заменит любые фактические вопросительные знаки из строки. Но я уверен, что это также можно обойти (например, заменив нужный вопросительный знак заполнителем, затем удалив ненужные вопросительные знаки и снова заменив заполнитель вопросительными знаками).
К сожалению, все это звучит так, как будто я не стал бы делать это в SQL.