就像模式“[0-9][0-9][0-1][0-9]”

Sch*_*ief 4 sql t-sql sql-server

我有一个nvarchar4 位数字的字段。前 2 位数字介于 00 到 99 之间。接下来的 2 位数字应为 00 到 15 之间的数字

我的 SQllike看起来像这样:

I4020 like '[0-9][0-9][0-1][0-9]'
Run Code Online (Sandbox Code Playgroud)

问题是,例如 1219 是可能的。

是否可以用类似的模式来做到这一点?

BR斯特凡

Hei*_*nzi 5

使用一种LIKE 模式不可能做到这一点。但是,您可以使用其中两个:

(I4020 like '[0-9][0-9]0[0-9]' OR I4020 like '[0-9][0-9]1[0-5]')
Run Code Online (Sandbox Code Playgroud)

或者,如果字段始终包含数字,您可以使用数字匹配:

I4020 LIKE '[0-9][0-9][0-9][0-9]'
AND CONVERT(int, RIGHT(I4020, 2)) <= 15
Run Code Online (Sandbox Code Playgroud)

但请注意,T-SQLAND不会短路:如果 的最右边的两个字母I4020不是数字,则后一个查询可能会失败。