Создание MySQL SET из строки

Есть ли способ создать набор из строки отдельных значений в MySQL? Например:

«быстрая, коричневая, лиса» = >   'Тем', 'быстрый', 'коричневый', 'лиса'

Этакий обратный EXPORT_SET без мелочей.

Привет

4 голоса | спросил Turin 7 MonEurope/Moscow2009-12-07T12:26:08+03:00Europe/Moscow12bEurope/MoscowMon, 07 Dec 2009 12:26:08 +0300 2009, 12:26:08

4 ответа


0

Если вы пытаетесь использовать набор в выражении IN вместо разделения строки, вы можете сделать сравнение, например

SELECT * FROM `table` WHERE 'the,quick,brown,fox' REGEXP CONCAT('(^|,)','word','(,|$)');

Я не уверен, насколько эффективно это будет, если ваш набор данных большой, но это может быть быстрее, чем чтение и выбор из временной таблицы.

ответил cmptrgeekken 27 SunEurope/Moscow2009-12-27T00:55:21+03:00Europe/Moscow12bEurope/MoscowSun, 27 Dec 2009 00:55:21 +0300 2009, 00:55:21
0

Протестировано на MySQL 5.1.41:

DROP TABLE IF EXISTS n;
CREATE TEMPORARY TABLE n AS
  SELECT -1 AS N UNION
  SELECT -2 UNION
  SELECT -3 UNION
  SELECT -4 UNION
  SELECT -5;

DROP TABLE IF EXISTS foo;
CREATE TABLE foo AS
  SELECT 'the,quick,brown,fox' AS csv;

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(foo.csv, ',', n.n), ',', 1) AS word
FROM foo JOIN n
  ON (LENGTH(REPLACE(foo.csv, ',', ''))-LENGTH(foo.csv) <= n.n+1);

Результат:

+-------+
| word  |
+-------+
| fox   |
| brown |
| quick |
| the   |
+-------+
ответил Bill Karwin 27 SunEurope/Moscow2009-12-27T01:59:11+03:00Europe/Moscow12bEurope/MoscowSun, 27 Dec 2009 01:59:11 +0300 2009, 01:59:11
0

Вы можете разбить текст на отдельные элементы, прочитать во временную таблицу и затем выбрать результат.

например.

http://forums.mysql.com/read .php? 60,78776,242420 # сообщ-242420

ответил davek 7 MonEurope/Moscow2009-12-07T12:28:20+03:00Europe/Moscow12bEurope/MoscowMon, 07 Dec 2009 12:28:20 +0300 2009, 12:28:20
0

Разве FIND_IN_SET не решит вашу проблему?

FIND_IN_SET ()

ответил dyesdyes 25 PM00000090000004531 2014, 21:02:45

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132