2015-04-27 3 views
0

У меня есть небольшая проблема с некоторыми странными строками в таблице базы данных. Мне нужно разбить такие примеры строк на массивы INT или отдельно на INT цикл или sth.SQL-разделение в MySQL без собственных функций

Это должно быть сделано в 'обычной' MySQL (ни одна из функций, не заявляет и т.д. - только ЗЕЬЕСТ + встроенные функции, как-REPLACE(), SUBSTRING())

524;779;559;;;559;411;760;; + другие;

Есть такое намерение можно выполнить?

+0

Какова структура ваших таблиц? и каков ваш ожидаемый результат? \ – Alex

+0

Мне нужно получить каждый INT путем sptlitting из поля 'some_field' VARCHAR (50), который содержит эти примеры - concinated INTS with ';' после каждого – Rafcik

+1

Plz указать желаемый результат. –

ответ

0

Если это операция однократной операции для преобразования ваших данных в нормальный формат, вы можете принять идею от this answer и расширить ее до максимального количества идентификаторов в одной строке.

Пример на SQL Fiddle.

SELECT DISTINCT id, val 
FROM (
    SELECT id, substring_index(substring_index(`val`,';',-1),';',1) AS val FROM tab 
    UNION ALL 
    SELECT id, substring_index(substring_index(`val`,';',-2),';',1) FROM tab 
    UNION ALL 
    SELECT id, substring_index(substring_index(`val`,';',-3),';',1) FROM tab 
    UNION ALL 
    SELECT id, substring_index(substring_index(`val`,';',-4),';',1) FROM tab 
    UNION ALL 
    SELECT id, substring_index(substring_index(`val`,';',-5),';',1) FROM tab 
) x 
WHERE val <> '' 
ORDER BY id 
Смежные вопросы