#sql #sql-server
#sql #sql-сервер
Вопрос:
У меня есть список названий компаний, которые были отправлены с добавленными номерами компаний. Как я могу удалить эти номера компаний (разной длины) в SQL? «Limited», если в названии необходимо назвать «LTD».
Например:
Company_name
MORTISON amp; CO MANAGEMENT LIMITED - FSP986
SALT MANAGEMENT LIMITED FSP33457
Nes Wiki FSP23423435
и мне нужно
MORTISON amp; CO MANAGEMENT LTD
SALT MANAGEMENT LTD
Nes Wiki FSP23423435
Изменение с «Limited» на «LTD» я могу сделать с предложением case when
Но как мне удалить все из — FSP pr FSP?
Я попробовал фрагмент кода, который я нашел на двух разных страницах, но он отображает пустые ячейки. Могу ли я не использовать ‘%’, чтобы избавиться от различных длин чисел? Я оставил -x перед последней скобкой, поскольку я не знаю длину или количество цифр. Как мне справиться с тем фактом, что у меня иногда есть FSP, а иногда — FSP
, LEFT(Company_name, CHARINDEX('FSP%',Company_name) )
Комментарии:
1. Это обновление одного элемента или непрерывный процесс?
Ответ №1:
Вы можете использовать patindex()
для большей гибкости. Однако вам действительно нужно проверить разные возможности:
select (case when company_name like '% - FSP[0-9]%'
then trim(left(company_name, patindex('% - FSP[0-9]%', company_name)))
when company_name like '% FSP[0-9]%'
then trim(left(company_name, patindex('% FSP[0-9]%', company_name)))
else company_name
end)
Это также можно сделать с charindex()
помощью , но это не дает гибкости для поиска числа после FSP:
select (case when company_name like '% - FSP%'
then trim(left(company_name, charindex(' - FSP', company_name)))
when company_name like '% FSP%'
then trim(left(company_name, charindex(' FSP', company_name)))
else company_name
end)
Вот скрипка db<> .
Комментарии:
1. отлично, мне просто пришлось изменить trim на ltrim, поскольку он жаловался, что ‘TRIM’ не является распознанным именем встроенной функции. Большое спасибо!
2. @Anna . . .
trim()
был представлен совсем недавно.