SQL Server查询方括号内的数字

时间:2018-10-22 12:45:30

标签: sql-server sql-like

表中的记录格式很少,ABCDEF[123]ABCDEFABCDEF[ABC]ABCDEF[123]字母和数字的数量不是固定的,它们是变化的。

我可以很容易地找到带有方括号的像这样的东西和它的变化形式。

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

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

我尝试了LIKE '%[___/]' ESCAPE '/',希望操纵它仅接受括号内的数字,但无法使其正常工作。

一个巨大的警告可能是诸如ABC[123]DEF格式的记录。这可能很麻烦,因为我不希望返回此类记录。我不知道是否有这样的记录,但我无法否认这种可能性。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

括弧用于提供有效的字符集。 ({ component: ChildComponent = DefaultComponent, ...rest }) => 表示从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 '\'