Как написать запрос для добавления префикса к строке, разделенной запятыми, в MySQL?

#mysql #sql

Вопрос:

  • У меня есть таблица в базе данных MySQL со столбцом id .
  • Столбец идентификатора содержит значения, разделенные запятыми, хранящиеся в нем в формате VARCHAR.
  • Я хочу добавить префикс C к каждому значению в выходных данных запроса.

Экс:

 Current Query: select id from table; 
Current Output: 1,2,3,4

Desired Output: C1,C2,C3,C4
 

Комментарии:

1. Никогда, никогда не храните данные в виде элементов, разделенных запятыми, это только доставит вам массу неприятностей.

2. Есть ли у вас возможность исправить этот сломанный дизайн базы данных, прежде чем продолжить?

3. На самом деле это не мой дизайн. Я просто устраняю пробел в системе.

Ответ №1:

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

Похоже, что обработка id как строки и применение к ней строковых функций-лучшее решение. Если вы хотите сделать это непостоянным, вы можете сделать это таким образом:

 SELECT
  id AS oldId,
  IF(LENGTH(id) > 0, CONCAT('C', REPLACE(id, ',', ',C')), '') AS newId
FROM
  table;
 

Это работает, если сначала проверить, есть ли что-то внутри id . Если его нет, он остается пустым. Если есть содержимое, a C добавляется спереди и после каждой запятой.

если вы хотите сделать это постоянным, вы могли бы сделать:

 UPDATE
  table
SET
  id = IF(LENGTH(id) > 0, CONCAT('C', REPLACE(id, ',', ',C')), '');
 

Это изменит содержимое вашей таблицы. Наносите с осторожностью и только один раз.

Комментарии:

1. Спасибо за решение. Все прошло гладко. К сожалению, обновление-это не вариант. Просто принесите и подготовьте веревку.