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



我在表格中有几个记录格式,ABCDEF[123]ABCDEFABCDEF[ABC]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]

最新更新