Create table temp
(
ID nvarchar(50)
)
ID包含因此被定义为VARCHAR当时在某些情况下,零数值笔 - 为多个SQL语句的范围
如何获得值与3555开始3999和8000 9999.There没有具体的裁定的长度总是4 如:
3555
35688888888888
3590909
8000
85805667
所有的值是有效的,并且是牵强。
请让我知道对于上述方案
Create table temp
(
ID nvarchar(50)
)
ID包含因此被定义为VARCHAR当时在某些情况下,零数值笔 - 为多个SQL语句的范围
如何获得值与3555开始3999和8000 9999.There没有具体的裁定的长度总是4 如:
3555
35688888888888
3590909
8000
85805667
所有的值是有效的,并且是牵强。
请让我知道对于上述方案
你可以用LIKE
使用少量表达式。如果你有一个ID
索引,它会使用它,所以它会很有效率。事情是这样的:
SELECT
ID
FROM
temp
WHERE
ID LIKE '3[5-9]%'
OR ID LIKE '[89]%'
LIKE '3[5-9]%'
与3
和第二个字符是5
或6
或7
或8
或9
开头的字符串相匹配。这两个字符后可以有0个或更多的其他字符。任何数量的额外字符。
LIKE '[89]%'
匹配任何以8
或9
和之后的任意数字字符开头的字符串。
谢谢。 – user2545157
嗨范围是从3555及以上..你可以请让我知道如何实现它 – user2545157
@ user2545157,目前的答案应适用于任何长度的价值。 '%'匹配任意数量的字符。 –
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
前四位数字的数字。
你在找什么?你有桌子,你想要检索数据?你想要在表中生成数据?要么 .. ? –
你试过了什么? “LIKE”操作符或“LEFT”和“SUBSTRING”函数可以做你需要的东西 – dlatikay