Sql 服务器查询方括号内的数字

Sql server query for numbers inside a square bracket

我的记录格式很少 table, ABCDEF, [123]ABCDEF, ABCDEF[ABC] and ABCDEF[123] 字母数字不固定,它们各不相同。

我可以通过这样的方式轻松找到带括号的那些及其变体。

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

但我想查找括号内只有三个数字且仅出现在行首或行尾的记录。即 [123]ABCDEFABCDEF[123] 格式。

我试过 LIKE '%[___/]' ESCAPE '/' 并希望操纵它只接受括号内的数字但无法使其工作。

一个巨大的警告是可能会有 ABC[123]DEF 格式的记录。这可能会很麻烦,因为我不想返回此类记录。我不知道有没有这样的记录,但我不能排除这种可能性。

我怎样才能做我想做的事?

括号用于提供有效的字符集。 [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]