EXPLODE UTF-8 russian (кириллицы) letter for MYSQL кратко

Практика



как известно MySQL не имеет встроенной функции explode, но ее можно сымитировать причем с использованием UTF-8 тоесть с поддежкой кириллицы -русских букв

​
CREATE DEFINER=`root`@`%` 
FUNCTION `explode`(delimiter VARCHAR(12),string TEXT, indexWord INT) 
RETURNS varchar(255) CHARSET utf8mb4
    DETERMINISTIC
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(string , delimiter , indexWord ),
       CHAR_LENGTH(SUBSTRING_INDEX(string , delimiter , indexWord -1)) + 1),delimiter , '')

Очень важно использовать именно CHAR_LENGTH вместо LENGTH .

пример использования

EXPLODE UTF-8 russian (кириллицы) letter for MYSQL

Если нужно возвращать много строк (коллекцию) то можно использовать такую функцию

нуно иметь таблицу

temp_table_collection(id, one_word) с минимум 2 мя полями и создать хранимую функию

CREATE DEFINER=`root`@`%` FUNCTION `explode_collection`( list_string TEXT )
RETURNS text CHARSET utf8mb4
DETERMINISTIC
BEGIN
IF list_string = '' THEN RETURN 0; END IF;
SET @cnt=0;
SET @delim=',';
SET @total=LENGTH(list_string ) - LENGTH(REPLACE(list_string ,@delim,''));
WHILE (@cnt<= @total && @total >0) DO
SET @cnt= @cnt+1;
set @text=explode(@delim,list_string ,@cnt);
INSERT INTO temp_table_collection(one_word) VALUES ( @text);

END WHILE;
RETURN @cnt;
END

пример использования

SELECT explode_collection(list_words) FROM words limit 1000000;

После выполнения будет вставлена каждая запись после запятой во временную таблицу temp_table_collection

спасибо)

создано: 2021-05-10
обновлено: 2024-11-11
37



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Базы данных - MySql (Maria DB)

Термины: Базы данных - MySql (Maria DB)