Наконец-то получил душу.
Предположим, у нас есть процедура 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>
Благодаря @ Саритатевари за идею.
Возможно, это указывает на то, что у вас есть огромная проблема с вашими данными. Для этого вам нужен динамический sql – e4c5
Иными словами, я передаю значение разделителя в параметре, то как это использовать, пожалуйста, помогите .. –
Я получил решение: мы можем использовать любой разделитель внутри '', но, наконец, заменим тот, который мы проходят. –