мне было интересно, есть ли функция MYSQL для декодирования текста с помощью html-объектов. Я видел некоторые подходы с использованием REPLACE, но мне кажется, что управлять всеми объектами довольно сложно.
есть ли функция mysql для декодирования html-объектов?
comment
Тот факт, что вы спрашиваете об этом, подразумевает, что у вас есть ошибка в дизайне вашего приложения. Движок БД не должен этим заморачиваться, и изменить приложение так, чтобы вам не понадобилась такая функция, — правильно.
- person Tomalak   schedule 09.09.2010
comment
@ Томалак, это просто смешно. То, что вы не можете придумать сценарий, когда это может понадобиться, не означает, что его не существует. ОП не указал, для чего он это использует, поэтому вы не можете предположить, что он делает что-то не так.
- person matteo   schedule 11.12.2012
comment
@matteo Я даже не говорил, что не могу придумать такой сценарий. Я сказал, что все портится, когда вы оказываетесь в таком сценарии. Это пословица, когда в яме, перестань копать ситуацию. То, что что-то - каким-то образом - может быть технически возможно, вовсе не является веской причиной для этого. Вместо того, чтобы укреплять злополучный подход, я посоветовал сесть и посмотреть на ситуацию с другой стороны.
- person Tomalak   schedule 11.12.2012
comment
? многим людям приходится иметь дело с приложениями, которые они не могут изменить..... начинать с нуля - это роскошь
- person Mike M   schedule 18.09.2017
Ответы (5)
Вы можете создать функцию, как показано ниже
DELIMITER $$
DROP FUNCTION IF EXISTS `HTML_UnEncode`$$
CREATE FUNCTION `HTML_UnEncode`(X VARCHAR(255)) RETURNS VARCHAR(255) CHARSET latin1 DETERMINISTIC
BEGIN
DECLARE TextString VARCHAR(255) ;
SET TextString = X ;
#quotation mark
IF INSTR( X , '"' )
THEN SET TextString = REPLACE(TextString, '"','"') ;
END IF ;
#apostrophe
IF INSTR( X , ''' )
THEN SET TextString = REPLACE(TextString, ''','"') ;
END IF ;
#ampersand
IF INSTR( X , '&' )
THEN SET TextString = REPLACE(TextString, '&','&') ;
END IF ;
#less-than
IF INSTR( X , '<' )
THEN SET TextString = REPLACE(TextString, '<','<') ;
END IF ;
#greater-than
IF INSTR( X , '>' )
THEN SET TextString = REPLACE(TextString, '>','>') ;
END IF ;
#non-breaking space
IF INSTR( X , ' ' )
THEN SET TextString = REPLACE(TextString, ' ',' ') ;
END IF ;
#inverted exclamation mark
IF INSTR( X , '¡' )
THEN SET TextString = REPLACE(TextString, '¡','¡') ;
END IF ;
#cent
IF INSTR( X , '¢' )
THEN SET TextString = REPLACE(TextString, '¢','¢') ;
END IF ;
#pound
IF INSTR( X , '£' )
THEN SET TextString = REPLACE(TextString, '£','£') ;
END IF ;
#currency
IF INSTR( X , '¤' )
THEN SET TextString = REPLACE(TextString, '¤','¤') ;
END IF ;
#yen
IF INSTR( X , '¥' )
THEN SET TextString = REPLACE(TextString, '¥','¥') ;
END IF ;
#broken vertical bar
IF INSTR( X , '¦' )
THEN SET TextString = REPLACE(TextString, '¦','¦') ;
END IF ;
#section
IF INSTR( X , '§' )
THEN SET TextString = REPLACE(TextString, '§','§') ;
END IF ;
#spacing diaeresis
IF INSTR( X , '¨' )
THEN SET TextString = REPLACE(TextString, '¨','¨') ;
END IF ;
#copyright
IF INSTR( X , '©' )
THEN SET TextString = REPLACE(TextString, '©','©') ;
END IF ;
#feminine ordinal indicator
IF INSTR( X , 'ª' )
THEN SET TextString = REPLACE(TextString, 'ª','ª') ;
END IF ;
#angle quotation mark (left)
IF INSTR( X , '«' )
THEN SET TextString = REPLACE(TextString, '«','«') ;
END IF ;
#negation
IF INSTR( X , '¬' )
THEN SET TextString = REPLACE(TextString, '¬','¬') ;
END IF ;
#soft hyphen
IF INSTR( X , '­' )
THEN SET TextString = REPLACE(TextString, '­','') ;
END IF ;
#registered trademark
IF INSTR( X , '®' )
THEN SET TextString = REPLACE(TextString, '®','®') ;
END IF ;
#spacing macron
IF INSTR( X , '¯' )
THEN SET TextString = REPLACE(TextString, '¯','¯') ;
END IF ;
#degree
IF INSTR( X , '°' )
THEN SET TextString = REPLACE(TextString, '°','°') ;
END IF ;
#plus-or-minus
IF INSTR( X , '±' )
THEN SET TextString = REPLACE(TextString, '±','±') ;
END IF ;
#superscript 2
IF INSTR( X , '²' )
THEN SET TextString = REPLACE(TextString, '²','²') ;
END IF ;
#superscript 3
IF INSTR( X , '³' )
THEN SET TextString = REPLACE(TextString, '³','³') ;
END IF ;
#spacing acute
IF INSTR( X , '´' )
THEN SET TextString = REPLACE(TextString, '´','´') ;
END IF ;
#micro
IF INSTR( X , 'µ' )
THEN SET TextString = REPLACE(TextString, 'µ','µ') ;
END IF ;
#paragraph
IF INSTR( X , '¶' )
THEN SET TextString = REPLACE(TextString, '¶','¶') ;
END IF ;
#middle dot
IF INSTR( X , '·' )
THEN SET TextString = REPLACE(TextString, '·','·') ;
END IF ;
#spacing cedilla
IF INSTR( X , '¸' )
THEN SET TextString = REPLACE(TextString, '¸','¸') ;
END IF ;
#superscript 1
IF INSTR( X , '¹' )
THEN SET TextString = REPLACE(TextString, '¹','¹') ;
END IF ;
#masculine ordinal indicator
IF INSTR( X , 'º' )
THEN SET TextString = REPLACE(TextString, 'º','º') ;
END IF ;
#angle quotation mark (right)
IF INSTR( X , '»' )
THEN SET TextString = REPLACE(TextString, '»','»') ;
END IF ;
#fraction 1/4
IF INSTR( X , '¼' )
THEN SET TextString = REPLACE(TextString, '¼','¼') ;
END IF ;
#fraction 1/2
IF INSTR( X , '½' )
THEN SET TextString = REPLACE(TextString, '½','½') ;
END IF ;
#fraction 3/4
IF INSTR( X , '¾' )
THEN SET TextString = REPLACE(TextString, '¾','¾') ;
END IF ;
#inverted question mark
IF INSTR( X , '¿' )
THEN SET TextString = REPLACE(TextString, '¿','¿') ;
END IF ;
#multiplication
IF INSTR( X , '×' )
THEN SET TextString = REPLACE(TextString, '×','×') ;
END IF ;
#division
IF INSTR( X , '÷' )
THEN SET TextString = REPLACE(TextString, '÷','÷') ;
END IF ;
#capital a, grave accent
IF INSTR( X , 'À' )
THEN SET TextString = REPLACE(TextString, 'À','À') ;
END IF ;
#capital a, acute accent
IF INSTR( X , 'Á' )
THEN SET TextString = REPLACE(TextString, 'Á','Á') ;
END IF ;
#capital a, circumflex accent
IF INSTR( X , 'Â' )
THEN SET TextString = REPLACE(TextString, 'Â','Â') ;
END IF ;
#capital a, tilde
IF INSTR( X , 'Ã' )
THEN SET TextString = REPLACE(TextString, 'Ã','Ã') ;
END IF ;
#capital a, umlaut mark
IF INSTR( X , 'Ä' )
THEN SET TextString = REPLACE(TextString, 'Ä','Ä') ;
END IF ;
#capital a, ring
IF INSTR( X , 'Å' )
THEN SET TextString = REPLACE(TextString, 'Å','Å') ;
END IF ;
#capital ae
IF INSTR( X , 'Æ' )
THEN SET TextString = REPLACE(TextString, 'Æ','Æ') ;
END IF ;
#capital c, cedilla
IF INSTR( X , 'Ç' )
THEN SET TextString = REPLACE(TextString, 'Ç','Ç') ;
END IF ;
#capital e, grave accent
IF INSTR( X , 'È' )
THEN SET TextString = REPLACE(TextString, 'È','È') ;
END IF ;
#capital e, acute accent
IF INSTR( X , 'É' )
THEN SET TextString = REPLACE(TextString, 'É','É') ;
END IF ;
#capital e, circumflex accent
IF INSTR( X , 'Ê' )
THEN SET TextString = REPLACE(TextString, 'Ê','Ê') ;
END IF ;
#capital e, umlaut mark
IF INSTR( X , 'Ë' )
THEN SET TextString = REPLACE(TextString, 'Ë','Ë') ;
END IF ;
#capital i, grave accent
IF INSTR( X , 'Ì' )
THEN SET TextString = REPLACE(TextString, 'Ì','Ì') ;
END IF ;
#capital i, acute accent
IF INSTR( X , 'Í' )
THEN SET TextString = REPLACE(TextString, 'Í','Í') ;
END IF ;
#capital i, circumflex accent
IF INSTR( X , 'Î' )
THEN SET TextString = REPLACE(TextString, 'Î','Î') ;
END IF ;
#capital i, umlaut mark
IF INSTR( X , 'Ï' )
THEN SET TextString = REPLACE(TextString, 'Ï','Ï') ;
END IF ;
#capital eth, Icelandic
IF INSTR( X , 'Ð' )
THEN SET TextString = REPLACE(TextString, 'Ð','Ð') ;
END IF ;
#capital n, tilde
IF INSTR( X , 'Ñ' )
THEN SET TextString = REPLACE(TextString, 'Ñ','Ñ') ;
END IF ;
#capital o, grave accent
IF INSTR( X , 'Ò' )
THEN SET TextString = REPLACE(TextString, 'Ò','Ò') ;
END IF ;
#capital o, acute accent
IF INSTR( X , 'Ó' )
THEN SET TextString = REPLACE(TextString, 'Ó','Ó') ;
END IF ;
#capital o, circumflex accent
IF INSTR( X , 'Ô' )
THEN SET TextString = REPLACE(TextString, 'Ô','Ô') ;
END IF ;
#capital o, tilde
IF INSTR( X , 'Õ' )
THEN SET TextString = REPLACE(TextString, 'Õ','Õ') ;
END IF ;
#capital o, umlaut mark
IF INSTR( X , 'Ö' )
THEN SET TextString = REPLACE(TextString, 'Ö','Ö') ;
END IF ;
#capital o, slash
IF INSTR( X , 'Ø' )
THEN SET TextString = REPLACE(TextString, 'Ø','Ø') ;
END IF ;
#capital u, grave accent
IF INSTR( X , 'Ù' )
THEN SET TextString = REPLACE(TextString, 'Ù','Ù') ;
END IF ;
#capital u, acute accent
IF INSTR( X , 'Ú' )
THEN SET TextString = REPLACE(TextString, 'Ú','Ú') ;
END IF ;
#capital u, circumflex accent
IF INSTR( X , 'Û' )
THEN SET TextString = REPLACE(TextString, 'Û','Û') ;
END IF ;
#capital u, umlaut mark
IF INSTR( X , 'Ü' )
THEN SET TextString = REPLACE(TextString, 'Ü','Ü') ;
END IF ;
#capital y, acute accent
IF INSTR( X , 'Ý' )
THEN SET TextString = REPLACE(TextString, 'Ý','Ý') ;
END IF ;
#capital THORN, Icelandic
IF INSTR( X , 'Þ' )
THEN SET TextString = REPLACE(TextString, 'Þ','Þ') ;
END IF ;
#small sharp s, German
IF INSTR( X , 'ß' )
THEN SET TextString = REPLACE(TextString, 'ß','ß') ;
END IF ;
#small a, grave accent
IF INSTR( X , 'à' )
THEN SET TextString = REPLACE(TextString, 'à','à') ;
END IF ;
#small a, acute accent
IF INSTR( X , 'á' )
THEN SET TextString = REPLACE(TextString, 'á','á') ;
END IF ;
#small a, circumflex accent
IF INSTR( X , 'â' )
THEN SET TextString = REPLACE(TextString, 'â','â') ;
END IF ;
#small a, tilde
IF INSTR( X , 'ã' )
THEN SET TextString = REPLACE(TextString, 'ã','ã') ;
END IF ;
#small a, umlaut mark
IF INSTR( X , 'ä' )
THEN SET TextString = REPLACE(TextString, 'ä','ä') ;
END IF ;
#small a, ring
IF INSTR( X , 'å' )
THEN SET TextString = REPLACE(TextString, 'å','å') ;
END IF ;
#small ae
IF INSTR( X , 'æ' )
THEN SET TextString = REPLACE(TextString, 'æ','æ') ;
END IF ;
#small c, cedilla
IF INSTR( X , 'ç' )
THEN SET TextString = REPLACE(TextString, 'ç','ç') ;
END IF ;
#small e, grave accent
IF INSTR( X , 'è' )
THEN SET TextString = REPLACE(TextString, 'è','è') ;
END IF ;
#small e, acute accent
IF INSTR( X , 'é' )
THEN SET TextString = REPLACE(TextString, 'é','é') ;
END IF ;
#small e, circumflex accent
IF INSTR( X , 'ê' )
THEN SET TextString = REPLACE(TextString, 'ê','ê') ;
END IF ;
#small e, umlaut mark
IF INSTR( X , 'ë' )
THEN SET TextString = REPLACE(TextString, 'ë','ë') ;
END IF ;
#small i, grave accent
IF INSTR( X , 'ì' )
THEN SET TextString = REPLACE(TextString, 'ì','ì') ;
END IF ;
#small i, acute accent
IF INSTR( X , 'í' )
THEN SET TextString = REPLACE(TextString, 'í','í') ;
END IF ;
#small i, circumflex accent
IF INSTR( X , 'î' )
THEN SET TextString = REPLACE(TextString, 'î','î') ;
END IF ;
#small i, umlaut mark
IF INSTR( X , 'ï' )
THEN SET TextString = REPLACE(TextString, 'ï','ï') ;
END IF ;
#small eth, Icelandic
IF INSTR( X , 'ð' )
THEN SET TextString = REPLACE(TextString, 'ð','ð') ;
END IF ;
#small n, tilde
IF INSTR( X , 'ñ' )
THEN SET TextString = REPLACE(TextString, 'ñ','ñ') ;
END IF ;
#small o, grave accent
IF INSTR( X , 'ò' )
THEN SET TextString = REPLACE(TextString, 'ò','ò') ;
END IF ;
#small o, acute accent
IF INSTR( X , 'ó' )
THEN SET TextString = REPLACE(TextString, 'ó','ó') ;
END IF ;
#small o, circumflex accent
IF INSTR( X , 'ô' )
THEN SET TextString = REPLACE(TextString, 'ô','ô') ;
END IF ;
#small o, tilde
IF INSTR( X , 'õ' )
THEN SET TextString = REPLACE(TextString, 'õ','õ') ;
END IF ;
#small o, umlaut mark
IF INSTR( X , 'ö' )
THEN SET TextString = REPLACE(TextString, 'ö','ö') ;
END IF ;
#small o, slash
IF INSTR( X , 'ø' )
THEN SET TextString = REPLACE(TextString, 'ø','ø') ;
END IF ;
#small u, grave accent
IF INSTR( X , 'ù' )
THEN SET TextString = REPLACE(TextString, 'ù','ù') ;
END IF ;
#small u, acute accent
IF INSTR( X , 'ú' )
THEN SET TextString = REPLACE(TextString, 'ú','ú') ;
END IF ;
#small u, circumflex accent
IF INSTR( X , 'û' )
THEN SET TextString = REPLACE(TextString, 'û','û') ;
END IF ;
#small u, umlaut mark
IF INSTR( X , 'ü' )
THEN SET TextString = REPLACE(TextString, 'ü','ü') ;
END IF ;
#small y, acute accent
IF INSTR( X , 'ý' )
THEN SET TextString = REPLACE(TextString, 'ý','ý') ;
END IF ;
#small thorn, Icelandic
IF INSTR( X , 'þ' )
THEN SET TextString = REPLACE(TextString, 'þ','þ') ;
END IF ;
#small y, umlaut mark
IF INSTR( X , 'ÿ' )
THEN SET TextString = REPLACE(TextString, 'ÿ','ÿ') ;
END IF ;
RETURN TextString ;
END$$
DELIMITER ;
И выполните ниже запрос:
SELECT HTML_UnEncode('this is a <a>test, nothing more');
person
Bhargav
schedule
04.01.2017
Я читаю записи, созданные (ошибочным?) CKeditor, и мне также пришлось поставить замену амперсанда в первую позицию, также влияющую на X, так что такие символы, как
"é"
, которые иногда экранировались как &acute
; то есть #ampersand
IF INSTR( X , '&' )
THEN SET TextString = REPLACE(TextString, '&','&') ;
SET X = REPLACE(X, '&','&') ;
END IF ;
Это кажется мне нормальным поведением, поэтому я исправил только опечатку, вызвавшую ошибку в вашем ответе, но я не сильно удивлюсь, если прочитаю, что я не единственный в этом случае. Надеюсь, поможет.
- person Balmipour; 17.02.2017
Также пришлось добавить одинарную кавычку.
REPLACE(TextString, ''',"'")
Это не было добавлено в мою правку. (и я не уверен, что последовательное редактирование является хорошей практикой. Не так ли? Как это рассматривается сообществом?)
- person Balmipour; 17.02.2017
отсутствуют основные элементы, такие как
™
, “
, ”
- person billynoah; 30.10.2017
Идеальная функция, отлично работает! Кроме того, следует использовать с правильной кодировкой! В моем случае с utf8. Определите все 3 набора символов - для параметра, для возврата и для объявленного
TextString
imgur.com/a/dQnjiRM
- person Arnis Juraga; 13.02.2020
Сделал еще несколько изменений и создал gist gist.github.com/arnisjuraga/c90a85a856ee878130105d0c60a4a181.
- person Arnis Juraga; 13.02.2020
Следующая функция может использоваться для декодирования числовых объектов, таких как 〹
CREATE FUNCTION entity_decode(txt TEXT CHARSET utf8) RETURNS TEXT CHARSET utf8
NO SQL
DETERMINISTIC
BEGIN
DECLARE tmp TEXT CHARSET utf8 DEFAULT txt;
DECLARE entity TEXT CHARSET utf8;
DECLARE pos1 INT DEFAULT 1;
DECLARE pos2 INT;
DECLARE codepoint INT;
IF txt IS NULL THEN
RETURN NULL;
END IF;
LOOP
SET pos1 = LOCATE('&#', tmp, pos1);
IF pos1 = 0 THEN
RETURN tmp;
END IF;
SET pos2 = LOCATE(';', tmp, pos1 + 2);
IF pos2 > pos1 THEN
SET entity = SUBSTRING(tmp, pos1, pos2 - pos1 + 1);
IF entity REGEXP '^&#[[:digit:]]+;$' THEN
SET codepoint = CAST(SUBSTRING(entity, 3, pos2 - pos1 - 2) AS UNSIGNED);
IF codepoint > 31 THEN
SET tmp = CONCAT(LEFT(tmp, pos1 - 1), CHAR(codepoint USING utf32), SUBSTRING(tmp, pos2 + 1));
END IF;
END IF;
END IF;
SET pos1 = pos1 + 1;
END LOOP;
END
person
epos_jk
schedule
18.06.2013
Вы должны добавить DELIMITER $$ в первую строку вашей функции.
- person Mohamad Hamouday; 21.11.2017
Прошло очень много времени, но для тех читателей, которые все еще натыкаются на это, как я: обратите внимание, что некоторые
𞉀
не вписываются обратно в UTF-8. Символ, который соответствует этому шаблону, но подходит только для UTF-16 или UTF-32, скорее всего, вызовет ошибку в CONCAT() о смешанных сопоставлениях. Рассмотрите возможность обработки или пропуска символов, которые выходят за рамки вашей области UTF-X, например: codepoint > 31 AND codepoint < 65535
- person A554551N; 01.08.2019
В качестве альтернативы тому, что сказал @ A554551N, если вы хотите, чтобы эти символы работали, вы можете изменить все
utf8
на utf8mb4
. (Можно даже избавиться от оператора codepoint > 31
if, если у вас есть другие символы, такие как
, которые вы хотите изменить.
- person abney317; 27.09.2019
Это добавляет поддержку числовых значений в шестнадцатеричном кодировании (которые я получаю из Perl, используя «use HTML::Entities qw(encode_entities_numeric);».
DELIMITER $$
CREATE FUNCTION entity_decode(txt TEXT CHARSET utf8) RETURNS TEXT CHARSET utf8
NO SQL
DETERMINISTIC
BEGIN
DECLARE tmp TEXT CHARSET utf8 DEFAULT txt;
DECLARE entity TEXT CHARSET utf8;
DECLARE pos1 INT DEFAULT 1;
DECLARE pos2 INT;
DECLARE codepoint INT;
IF txt IS NULL THEN
RETURN NULL;
END IF;
LOOP
SET pos1 = LOCATE('&#', tmp, pos1);
IF pos1 = 0 THEN
RETURN tmp;
END IF;
SET pos2 = LOCATE(';', tmp, pos1 + 2);
IF pos2 > pos1 THEN
SET entity = SUBSTRING(tmp, pos1, pos2 - pos1 + 1);
IF entity REGEXP '^&#[[:digit:]]+;$' THEN
SET codepoint = CAST(SUBSTRING(entity, 3, pos2 - pos1 - 2) AS UNSIGNED);
IF codepoint > 31 THEN
SET tmp = CONCAT(LEFT(tmp, pos1 - 1), CHAR(codepoint USING utf32), SUBSTRING(tmp, pos2 + 1));
END IF;
END IF;
IF entity REGEXP '^&#x[[:digit:]]+;$' THEN
SET codepoint = CAST(CONV(SUBSTRING(entity, 4, pos2 - pos1 - 3), 16, 10) AS UNSIGNED);
IF codepoint > 31 THEN
SET tmp = CONCAT(LEFT(tmp, pos1 - 1), CHAR(codepoint USING utf32), SUBSTRING(tmp, pos2 + 1));
END IF;
END IF;
END IF;
SET pos1 = pos1 + 1;
END LOOP;
END$$
DELIMITER ;
person
user2948341
schedule
31.03.2016
Это прекрасно работает, но обратите внимание, что второе регулярное выражение, которое соответствует объектам в шестнадцатеричном кодировании, должно быть '^[[:xdigit:]]+;$' вместо '^[[:digit:]]+ ;$' (изменить цифру на xdigit), чтобы она также соответствовала шестнадцатеричным цифрам AF.
- person SeanN; 30.07.2018
Я создал эту функцию:
DELIMITER $$
DROP FUNCTION IF EXISTS DecodeHTML$$
CREATE FUNCTION DecodeHTML(X VARCHAR(255)) RETURNS VARCHAR(255) CHARSET utf8 DETERMINISTIC
BEGIN
DECLARE TextString VARCHAR(255);
DECLARE word VARCHAR(255);
SET TextString = X;
SET word = 'á';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'á');
END IF;
SET word = 'é';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'é') ;
END IF;
SET word = 'í';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'í') ;
END IF;
SET word = 'ó';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'ó') ;
END IF;
SET word = 'ú';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'ú') ;
END IF;
SET word = 'Á';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'Á') ;
END IF;
SET word = 'É';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'É') ;
END IF;
SET word = 'Í';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'Í') ;
END IF;
SET word = 'Ó';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'Ó') ;
END IF;
SET word = 'Ú';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'Ú') ;
END IF;
SET word = 'À';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'À');
END IF;
SET word = 'Â';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'Â');
END IF;
SET word = 'Ä';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'Ä');
END IF;
SET word = 'Æ';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'Æ');
END IF;
SET word = 'È';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'È');
END IF;
SET word = 'Ê';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'Ê');
END IF;
SET word = 'Ì';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'Ì');
END IF;
SET word = 'Ð';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'Ð');
END IF;
SET word = 'Ò';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'Ò');
END IF;
SET word = 'Ù';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'Ù');
END IF;
SET word = 'Ô';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'Ô');
END IF;
SET word = 'Ö';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'Ö');
END IF;
SET word = 'Ø';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'Ø');
END IF;
SET word = 'Ü';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'Ü');
END IF;
SET word = 'ü';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'ü');
END IF;
SET word = 'ÿ';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'ÿ');
END IF;
SET word = 'ý';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'ý');
END IF;
SET word = 'õ';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'õ');
END IF;
SET word = 'ï';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'ï');
END IF;
SET word = 'ç';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'ç');
END IF;
SET word = 'ë';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'ë');
END IF;
SET word = 'Î';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'Î');
END IF;
SET word = '€';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'€') ;
END IF;
SET word = 'ñ';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'ñ') ;
END IF;
SET word = 'Ñ';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'Ñ') ;
END IF;
SET word = '£';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'£') ;
END IF;
SET word = '©';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'©') ;
END IF;
SET word = '®';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'®');
END IF;
SET word = ' ';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,' ');
END IF;
SET word = '¤';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'¤');
END IF;
SET word = '¦';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'¦');
END IF;
SET word = '¶';
IF INSTR( X , word ) THEN
SET TextString = REPLACE(TextString, word,'¶');
END IF;
RETURN TextString;
END$$
DELIMITER ;
person
Daniel
schedule
10.12.2019
Нет, в mySQL нет функции для декодирования html-объектов, поскольку она не связана с html :)
person
Sarfraz
schedule
09.09.2010
почему бы и нет, текстовый поиск выиграл бы от такой функции
- person Kumait; 05.12.2015