我有一个nvarchar
4 位数字的字段。前 2 位数字介于 00 和 99 之间。接下来的 2 位数字应该是介于 00 和 15 之间的数字
我的 SQLlike
看起来像这样:
I4020 like '[0-9][0-9][0-1][0-9]'
问题是例如 1219 是可能的。
是否可以使用类似的模式来做到这一点?
布拉斯特凡
我有一个nvarchar
4 位数字的字段。前 2 位数字介于 00 和 99 之间。接下来的 2 位数字应该是介于 00 和 15 之间的数字
我的 SQLlike
看起来像这样:
I4020 like '[0-9][0-9][0-1][0-9]'
问题是例如 1219 是可能的。
是否可以使用类似的模式来做到这一点?
布拉斯特凡
使用一种LIKE 模式是不可能做到这一点的。但是,您可以使用其中两个:
(I4020 like '[0-9][0-9]0[0-9]' OR I4020 like '[0-9][0-9]1[0-5]')
或者,如果字段始终包含数字,您可以使用数字匹配:
I4020 LIKE '[0-9][0-9][0-9][0-9]'
AND CONVERT(int, RIGHT(I4020, 2)) <= 15
但请注意,T-SQLAND
不会短路:如果 最右边的两个字母I4020
不是数字,则后一个查询可能会失败。
刹车间隔
(I4020 like '[0-9][0-9]0[0-9]' OR I4020 like '[0-9][0-9]1[0-5]')
(I4020 like '[0-9][0-9]0[0-9]' OR I4020 like '[0-9][0-9]1[0-5]')