Sql 将varchar更改为int

Sql 将varchar更改为int,sql,sql-server,Sql,Sql Server,我有一个问题,我不知道如何解决 嗯 我有一个类似这个例子的数据库 myTable ID(int) | Category (varchar(20)) 1 | 1029 2 | 2020 3 | 2030 类别中的所有记录均为数字,但格式为varchar。 我无法将类型从varchar更改为int 我需要的是在我的SQL查询中将varchar转换为int。 因为,我需要做一些像这样的事情 SELECT * FROM myTable HERE Category => 1000 AND Cate

我有一个问题,我不知道如何解决

我有一个类似这个例子的数据库
myTable

ID(int) | Category (varchar(20))
1 | 1029
2 | 2020
3 | 2030
类别中的所有记录均为数字,但格式为varchar。 我无法将类型从varchar更改为int

我需要的是在我的SQL查询中将varchar转换为int。 因为,我需要做一些像这样的事情

SELECT * FROM myTable HERE Category => 1000 AND Category =< 2000
在这里从myTable中选择*类别=>1000和类别=<2000
这怎么可能


对不起,我的书面英语,但我希望你能理解:)

只要使用
转换即可:

SELECT  * 
FROM    myTable 
WHERE   Convert(Int, Category) >= 1000 
AND     Convert(Int, Category) <= 2000

如果您想使用索引,我建议:

SELECT *
FROM myTable 
WHERE Category >= '1000' AND Category <= '2000' AND
      LEN(Category) = 4;
然后,可以在计算列上添加索引:

alter table mytable add category_int as (try_convert(int, category)) persisted;
create index idx_mytable_category_int on mytable(category_int);
然后,公式:

SELECT *
FROM myTable 
WHERE Category_int >= 1000 AND Category_int <= 2000 
选择*
从myTable
其中Category_int>=1000和Category_int
SELECT *
FROM myTable 
WHERE Category_int >= 1000 AND Category_int <= 2000