带有SECTION nvarchar列的表-A,其中包含以下数据示例:
SECTION
00
01
100
101
110
1000
1001
1234
2000
2001
2002
尝试使用演员:
SELECT
CAST(SECTION as int) as b,
FROM a
WHERE
SECTION Between 1001 and 2001
我得到"转换nvarchar值时转换失败' OO'到数据类型int。"
与''在哪里声明:
SELECT
CAST(SECTION as int) as b,
FROM a
WHERE
SECTION Between '1001' and '2001'
我得到的结果包括110
我该怎么写这个,所以我得到以下结果:
1001
1234
2000
2001
答案 0 :(得分:0)
以下是标准SQL,可能适用于数据示例的大多数数据库:
SELECT CAST(SECTION as int) as b
FROM a
WHERE SECTION LIKE '1____';
答案 1 :(得分:0)
似乎值00(零零)实际上是O(字母“O”)。因为如果您在SECTION列中输入了所有整数,则下面的示例中提到的查询将返回正确的结果。
SELECT
CAST(SECTION as int) as b,
FROM a
WHERE
SECTION Between 1001 and 2001
对于您的第二个查询,如果您按照分部列的记录订购,结果将如下所示
select * from a order by SECTION
Result :-
SECTION
00
01
100
1000
1001
101
110
1234
2000
2001
2002
对于第二个查询,将返回从1001到2001的值,因为SECTION是一个nvarchar列,因此它将按字母顺序获取数据。