Здравствуйте, у меня есть эта таблица:
0001
003
02
1234
0012
И я хотел бы изменить эту таблицу вот так
1000
300
20
1234
1200
Я имею в виду, что если перед числом стоит ноль, я бы хотел поставить его справа, например. 0012 станет 1200
Большое Вам спасибо
Что делать, если значение содержит только нули?
Вы можете использовать строковые операции:
select v.*,
stuff(col, 1, patindex('%[^0]%', col) - 1, '') + left(col, patindex('%[^0]%', col) - 1)
from (values ('0001'), ('003'), ('02'), ('1234')) v(col)
@TimBiegeleisen Знаете, не так-то просто заработать репутацию SQL, если вы живете в том же часовом поясе, что и Гордон. Вздох.
@TheImpaler Да, и поверьте мне, я считаю свои благословения каждый день, когда просыпаюсь, когда я знаю, что Гордон собирается спать. Но для меня это палка о двух концах, потому что в рабочее время в Азии мы не совсем понимаем тот объем, который вы получаете в США / Великобритании.
Просто добавьте 4 нуля в конце и извлеките подстроку, начиная с 1-9:
SELECT test, SUBSTRING(test + '0000', patindex('%[1-9]%', test), LEN(test))
FROM (VALUES
('0001'),
('003'),
('02'),
('1234'),
('0012')
) AS tests(test)
Для обработки сложных крайних случаев используйте:
SUBSTRING(test + '0000', ISNULL(NULLIF(patindex('%[1-9]%', test), 0), 1), LEN(test))
Зачем тебе это нужно?