2015-11-16 54 views
0

我想要做的是在我們的建築物內獲取一系列立方體數字。問題是多維數據庫數據類型是nvarchar。我知道它搞砸了我,但我無法控制數據庫,我們所有的立方體數字都以幾個字符開頭,例如AA-1到AA-255(因此是nvarchar)。我的問題是爲什麼下面的工作:SQL查詢不提供nvarchar的範圍

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

上面會給我要AA-1的PCNames至AA-9,但是當我做到以下幾點:

...

where CubeNumber like 'AA-[1-20]' 

它給了我AA-1和AA-2。我看到那裏的1和2,我沒有看到它是20的。那麼有可能讓這個範圍工作,或者1-9旁邊的任何範圍都可以使用該語法?

回答

1

正則表達式是一個字符串比較,因此將尋找特定的字符串。您的'AA- [1-20]'模式正在尋找以AA-開頭,然後是數字1到2或0的任何內容。正確的方法是'AA- [0-9] *'

如果您的多維數據集始終以AA開頭,您也可以進行替換,然後進行轉換以將多維數據集編號轉換爲實際編號,然後執行BETWEEN查詢。

CAST(REPLACE(CubeNumber,'AA-','') as INT) BETWEEN 1 AND 20; 
+0

我從來沒有想過使用一個替換感謝迅速答覆演員工作。 –