#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. Спасибо за решение. Все прошло гладко. К сожалению, обновление-это не вариант. Просто принесите и подготовьте веревку.