Удалить Emoji на MariaDB Выбрать запрос - PullRequest
4 голосов
/ 09 апреля 2019

Я пытаюсь удалить эмодзи в запросе выбора.Я использую MariaDB 10.3.14

Вот то, что я дошел до сих пор, но это не работает.Он повторяет всю строку.

SELECT REGEXP_REPLACE("<çşığ_lorem?ipsum?dolor", '/([\x10000-\x10FFFF]+)/g', '')

В текущей строке будут некоторые неанглийские, даже некоторые HTML-теги.

Чего я хочу добиться от этой строки - <çşığ_loremipsumdolor.

Как удалить смайлики из строки, используя MariaDB 10.3?

Заранее спасибо,

1 Ответ

0 голосов
/ 09 апреля 2019

Ваше регулярное выражение выглядит правильно. Я думаю, что проблема здесь - сама MariaDB. Существует подтвержденная проблема относительно основной причины: MDEV-11777

В качестве уродливого обходного пути вы можете преобразовать текст в utf8 (см. в этом обсуждении , чтобы узнать, почему это работает). Это покажет эмодзи и других персонажей как ?.

После этого вы просто удаляете ?.

Итак, как полный пример:

SELECT REGEXP_REPLACE(convert('<çşığ_lorem?ipsum?dolor' USING utf8),'\\?','');

Это даст вам <çşığ_loremipsumdolor.

Это, конечно, также заменит любые действительные знаки вопроса из строки. Но я уверен, что это также можно обойти (например, заменив требуемый знак вопроса заполнителем, затем удалив ненужные знаки вопроса и снова заменив заполнитель знаками вопроса).

К сожалению, все это звучит как то, чего я бы не делал в SQL.

...