2017-01-10 15 views
1

Я хочу использовать разделитель для функции group_concat() в mysql. Но я хочу динамически менять разделитель. Я имею в виду, что значение разделителя поступает из таблицы, и это отличается для каждой строки.IN mysql function group_concat change separator динамически

Я не смог найти решение для этого. Пожалуйста, помогите мне.

+1

Возможно, это указывает на то, что у вас есть огромная проблема с вашими данными. Для этого вам нужен динамический sql – e4c5

+0

Иными словами, я передаю значение разделителя в параметре, то как это использовать, пожалуйста, помогите .. –

+0

Я получил решение: мы можем использовать любой разделитель внутри '', но, наконец, заменим тот, который мы проходят. –

ответ

0

Наконец-то получил душу.

Предположим, у нас есть процедура MySQL. Нам нужно GROUP_CONCAT некоторое значение со специальным SEPARATOR (по умолчанию is ','). Но SEPARATOR не является статичным, он получен из другой таблицы, например. из таблицы «настроек».

DECLARE url_delimiter VARCHAR(255); 

SELECT catalog_url_delimiter 
INTO url_delimiter 
FROM settings; 

Мы не можем использовать переменную в качестве параметра SEPARATOR непосредственно:

-- doesn't work 
SELECT GROUP_CONCAT(`some_table`.id SEPARATOR url_delimiter) 
FROM <some query> 

Но мы можем использовать фиктивный разделитель и заменить его действительным, как показано ниже:

SELECT 
    REPLACE(
    GROUP_CONCAT(`some_table`.id SEPARATOR 'some-tricky-dummy-separator'), 
    'some-tricky-dummy-separator', 
    url_delimiter 
) 
FROM <some query> 

Благодаря @ Саритатевари за идею.