SQL查询没有为nvarchar提供范围

时间:2015-11-16 16:56:20

标签: sql sql-server-2008

我想要做的是在我们的建筑物内获得一系列立方体数字。问题是多维数据集编号数据类型是nvarchar。我知道它弄乱了我,但我无法控制数据库,我们所有的立方体数字前面都有几个字符,例如AA-1到AA-255(因此是nvarchar)。我的问题是为什么以下工作:

Select 
    PCName, 
    CubeNumer
From 
    thisTable
where 
    CubeNumber like 'AA-[1-9]'  

以上将给出AA-1至AA-9的PCNames,但是当我执行以下操作时:

...

where CubeNumber like 'AA-[1-20]'
它给了我AA-1和AA-2。我看到那里的1和2,我得到它没有看到它20。那么是否可以使该范围工作,或1-9旁边的任何范围使用该语法?

1 个答案:

答案 0 :(得分:1)

正则表达式是一个字符串比较,因此将寻找特定的字符串。您的模式' AA- [1-20]'正在寻找以AA-开头,然后是数字1到2或0的任何东西。正确的方法是做“AA- [0-9] *'

如果您的多维数据集始终以AA-开头,您还可以执行替换,然后执行转换以将多维数据集编号转换为实际数字,然后执行BETWEEN查询。

npm cache clean