Я хотел бы добавить нули к буквенно-цифровой строке, если это одна цифра.
У меня есть что-то вроде:
CV-1-1A
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
Я хотел бы добавить нули к буквенно-цифровой строке, если это одна цифра.
У меня есть что-то вроде:
CV-1-1A
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
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 с рабочим примером.