Как удалить определенную строку из символа в нескольких строках данных?

#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 .