2017-03-07 72 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前四位数字的数字。