SQL-запрос сервера для чисел внутри квадратной скобки - PullRequest
0 голосов
/ 22 октября 2018

У меня есть несколько форматов записей в таблице, ABCDEF, [123]ABCDEF, ABCDEF[ABC] и ABCDEF[123] Номера букв и цифр не фиксированы, они различаются.

Я могу легко найти те, в скобках которых есть что-то вроде этого, и это вариации.

SELECT * FROM X WHERE Y LIKE '%/[%' ESCAPE '/'

Но я хочу найти записи, где в скобках есть только три числа, и только еслиони появляются в начале или конце строки.т.е. [123]ABCDEF и ABCDEF[123] форматы.

Я пытался LIKE '%[___/]' ESCAPE '/' и надеялся манипулировать им, принимая только цифры внутри скобки, но не смог заставить его работать.

Огромное предостережение в том, что могут быть такие записи, как ABC[123]DEF формат.Это может быть неприятно, потому что я не хочу, чтобы такие записи возвращались.Я не знаю, есть ли такие записи, но я не могу отклонить возможность.

Как я могу сделать то, что я пытаюсь сделать?

1 Ответ

0 голосов
/ 22 октября 2018

Скобки используются для предоставления допустимого набора символов.[0-9] означает любую цифру от 0 до 9. Если скобка используется буквально, ее необходимо экранировать:

DECLARE @t TABLE(T nvarchar(20))

INSERT @t values ('ABCDEF'), ('[123]ABCDEF'), ('ABCDEF[ABC]'), ('ABCDEF[123]'), ('AS[123]AS')

SELECT *
FROM @t
WHERE T LIKE '\[[0-9][0-9][0-9]\]%' ESCAPE '\'
   OR T LIKE '%\[[0-9][0-9][0-9]\]' ESCAPE '\'

--Or match anywhere
--WHERE T LIKE '%\[[0-9][0-9][0-9]\]%' ESCAPE '\'

Результат

T
--------------------
[123]ABCDEF
ABCDEF[123]
...