Длина подстановочного знака SQL Server - PullRequest
0 голосов
/ 12 июня 2019

Я знаю, что% будет соответствовать для одного или нескольких символов, а _ будет соответствовать только для одного символа.Есть ли способ сделать совпадение для 5 или менее символов?Я мог бы написать код, который ищет 1, 2, .., 5 символов, но это было бы слишком много.

Вот пример

Select *
From MyTable
Where MyTable.[Content] like 'mystring%myotherstring'

Я хочу, чтобы% совпадал, если есть5 или 4 или 3 или 2 или 1 символов, которые разделяют «mystring» и «myotherstring».Любое разделение больше 5 не будет соответствовать.

Спасибо!

Ответы [ 2 ]

4 голосов
/ 12 июня 2019

Вы можете использовать подстановочный знак из одного символа _:

SELECT *
FROM MyTable
WHERE
    Content LIKE 'mystring_myotherstring' OR
    Content LIKE 'mystring__myotherstring' OR
    Content LIKE 'mystring___myotherstring' OR
    Content LIKE 'mystring____myotherstring' OR
    Content LIKE 'mystring_____myotherstring';

Обратите внимание, что расширенный оператор LIKE сервера SQL не поддерживает подстановочные знаки переменной ширины.Также, возможно, вы хотели поместить % в оба конца выражения LIKE, например,

WHERE Content LIKE '%mystring_myotherstring%'
0 голосов
/ 12 июня 2019

Вы можете сделать что-то подобное, чтобы проверить длину substring между вашими известными строками.

SELECT *
FROM MyTable
WHERE MyTable.[Content] LIKE 'mystring%myotherstring'
AND LEN(SUBSTRING([Content],LEN('mystring'), LEN([Content])-LEN('mystring') -LEN('myotherstring'))) <= 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...