Оператор типа Sql. Конец строки

#tsql

#tsql

Вопрос:

Я должен выбрать все поля, которые содержат определенный текст и заканчиваются символами " , ' ) или пробелом, или этот текст помещается в конец строки.

Итак, мне нужно что-то подобное:

 select *
from MyTable
Where Column1 like '%'   @text   '["'') ]%'
  

Этот запрос работает нормально, пока текст не будет помещен в конец Column1 .

Комментарии:

1. Не могли бы вы ввести какой-нибудь простой ввод и желаемый результат?

Ответ №1:

Вы могли бы использовать

 Where Column1   '"' like '%'   @text   '["'') ]%'
  

Ответ №2:

Почему бы не попробовать ИЛИ?

  Where Column1 like '%'   @text   '["'') ]%'
  or
  Column1 like '%'   @text   '["'') ]'
  

Или я неправильно понимаю требование? Ваш вопрос немного сложен для понимания.

Ответ №3:

 SELECT  *
FROM    MyTable
WHERE   Column1 LIKE '%'   @text   '%["'') ]'
        OR Column1 LIKE '%'   @text
  

Ответ №4:

Это должно работать лучше и быстрее:

 SELECT * FROM MyTable
WHERE
   ( (RIGHT(Column1,1) IN (' ', '"', '''', ')'))
     AND
     (SUBSTRING(Column1, LENGTH(@text)-1, LENGTH(@text))=@text)
   ) 
OR ( RIGHT(Column1, LENGTH(@text))=@text )
  

Комментарии:

1. Операционная система ищет случаи, когда текст находится в середине строки, но за ним следует один из указанных символов или справа от строки.