Удаление текста после кодового слова

#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() был представлен совсем недавно.