#sql-server
Вопрос:
У меня есть таблица со столбцом для идентификатора, это varchar, однако этот столбец должен содержать 14 символов. Поставщик, поставляющий эту таблицу, оставил некоторые из них с 15 символами. Формат числа — «FL000000123456». Итак, мы спросили их, и они сказали нам просто удалить начальный ноль. Мне нужно запустить обновление этой таблицы, чтобы удалить этот первый ноль, но я не знаю, как это сделать. Я запустил функцию LEN, чтобы вернуть мне те, у которых LEN > 14. Я могу заменить или запустить обновление на индивидуальной основе, но в таблице более 1 миллиона записей, и около 45 000 из них имеют ошибку > 14. Я не работаю над SQL большую часть своего времени, поэтому я не так искусен, как некоторые из вас, но любая помощь, которую я могу получить, будет очень признательна.
выход: FL0000000123456 — 15 символов
желаемый результат: FL000000123456 — 14 символов
Ответ №1:
Предполагая, что поэтому вы хотите удалить 3rd
персонажа, вы могли бы использовать STUFF
:
SELECT STUFF(YourColumn,3,1,'') AS NewColumn
FROM dbo.YourTable
WHERE LEN(YourColumn) = 15;
Конечно, это означает , что у вас есть ценность 'FL1234567891234'
, которую вы в конечном итоге получите 'FL234567891234'
, но я предполагаю, что этого не произойдет.
Комментарии:
1. Спасибо, что рассказали мне о функции STUFF, я не знал, что она существует, это сработало идеально, я ценю, что вы нашли время, чтобы помочь мне в этом вопросе.
2. @Larnu Можем ли мы также использовать замену? ВЫБЕРИТЕ Заменить(Ваш СТОЛБЕЦ,’FL0′,’FL’) КАК новый СТОЛБЕЦ ИЗ dbo. Ваша таблица, ГДЕ LEN(ваш столбец) = 15;
3. Это тоже сработало бы, при условии
'FL'
, что не может отображаться нигде, кроме как в качестве префикса @RajanPatekar .