SQL посмотреть значение аббревиатуры - PullRequest
0 голосов
/ 23 мая 2018

Итак, я объявил таблицу:

  DECLARE @VTable TABLE (ColtoAdj VARCHAR(50),HeadlineDescription 
  VARCHAR(50),HeadlineDescriptionGroup VARCHAR(50));

  INSERT INTO @VTable VALUES ('Neopla','Neoplasia','Cancer');
  INSERT INTO @VTable VALUES ('Metasta','Metastases','Cancer');
  INSERT INTO @VTable VALUES ('CES','CES','Cauda Equina');
  INSERT INTO @VTable VALUES ('CES-I','CES-I','Cauda Equina');

, которая затем используется в Outter и применяется к основной таблице, чтобы найти заголовок описания и группу заголовка описания.

  OUTER APPLY (
  SELECT TOP 1
  vt.ColtoAdj,
  Vt.HeadlineDescription,
  Vt.HeadlineDescriptionGroup
  FROM @VTable AS vt
  WHERE cmd.Headline LIKE ('%' + vt.ColtoAdj + '%')

Который для большинства моих данных отлично работает, так как многие слова поиска vt.ColtoAdj уникальны, например, имеют гифон и т. Д., Поэтому их можно использовать только для извлечения.Проблема в значении CES.Это может быть где угодно в заголовке из 255 символов.Так что в настоящее время он выбирает такие вещи, как "BraCES" и добавляет их неправильно.Я попытался вставить 2 значения для него ' CES' или 'CES ', чтобы просто получить аббревиатуру, но это все еще захватывает слова, заканчивающиеся на нем или начинающиеся.Есть ли в любом случае для этого значения в таблице, я могу получить его, чтобы найти только 3 буквы самостоятельно, но также искать полные слова для других?

Это может быть случай «нет», просто потому, что это похожая функция, и с помощью поиска слов вы не всегда можете гарантировать 100% точность, но я подумал, что проверю.

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Я могу думать только о индивидуальном решении:

WHERE 
(
    (cmd.Headline LIKE ('%' + vt.ColtoAdj + '%') and vt.ColtoAdj<>'CES')
    OR
    (cmd.Headline='CES' and vt.ColtoAdj='CES')
)
0 голосов
/ 23 мая 2018

Если вы ищете границы слов и слова ограничены пробелом, вы можете использовать:

WHERE ' ' + cmd.Headline + ' ' LIKE '% ' + vt.ColtoAdj + ' %'
...