Буквенно-цифровые строки без нуля в sql
Я хотел бы добавить нули к буквенно-цифровой строке, если это одна цифра.
У меня есть что-то вроде:
CV-1-1А
CV-1-32
CV-12-24
CV-1-2
CV-1-2a
и я хотел бы изменить его на:
CV-01-01A
CV-01-32
CV-12-24
CV-01-02
CV-01-02A
1 ответ
Решение
LPAD
может использоваться для заполнения нуля (или дополнения любым символом). Однако он не может работать внутри строки, поэтому требуется некоторая хитрость. Предполагая, что все ваши значения имеют формат a-b-c
где a
, b
а также c
строки длиной до 3 символов, вы можете использовать SUBSTRING_INDEX
разбить нить на части, LPAD
каждая часть индивидуально, и использовать CONCAT
собрать их все вместе:
SELECT CONCAT(SUBSTRING_INDEX(col, '-', 1),
'-',
LPAD(SUBSTRING_INDEX(SUBSTRING_INDEX(col, '-', 2), '-', -1), 2, '0'),
'-',
LPAD(SUBSTRING_INDEX(col, '-', -1), 3, '0'))
FROM t;
Вот SQLFiddle с рабочим примером.