2017-03-07 49 views
2
Create table temp 
(
ID nvarchar(50) 
) 

ID包含因此被定義爲VARCHAR當時在某些情況下,零數值筆 - 爲多個SQL語句的範圍

如何獲得值與3555開始3999和8000 9999.There沒有具體的裁定的長度總是4 如:

3555 
35688888888888 
3590909 

8000 
85805667 

所有的值是有效的,並且是牽強。

請讓我知道對於上述方案

+0

你在找什麼?你有桌子,你想要檢索數據?你想要在表中生成數據?要麼 .. ? –

+0

你試過了什麼? 「LIKE」操作符或「LEFT」和「SUBSTRING」函數可以做你需要的東西 – dlatikay

回答

6

你可以用LIKE使用少量表達式。如果你有一個ID索引,它會使用它,所以它會很有效率。事情是這樣的:

SELECT 
    ID 
FROM 
    temp 
WHERE 
    ID LIKE '3[5-9]%' 
    OR ID LIKE '[89]%' 

LIKE '3[5-9]%'3和第二個字符是56789開頭的字符串相匹配。這兩個字符後可以有0個或更多的其他字符。任何數量的額外字符。

LIKE '[89]%'匹配任何以89和之後的任意數字字符開頭的字符串。

+0

謝謝。 – user2545157

+0

嗨範圍是從3555及以上..你可以請讓我知道如何實現它 – user2545157

+0

@ user2545157,目前的答案應適用於任何長度的價值。 '%'匹配任意數量的字符。 –

2

T-SQL語句可以提取前四個字符,將其轉換成一個數字,這樣的查詢:

SELECT 
    [ID] 
FROM temp 
WHERE convert(int,LEFT([ID],4)) BETWEEN 3500 AND 3999 
OR convert(int,LEFT([ID],4)) BETWEEN 8000 AND 9999 

對於大量的數據如此將會非常慢,所以如果你需要表現,我會建議在表格中加一個索引爲int的列,在那裏你存儲代表ID前四位數字的數字。