我运行以下查询
CREATE TABLE #Temp
(
Data VARCHAR(100)
)
INSERT INTO #Temp VALUES ('241.110')
INSERT INTO #Temp VALUES ('1340.306')
SELECT * FROM #Temp ORDER BY Data asc
结果是
1340.306
241.110
当我将excel中的相同数据排序为最小到最大时,它有
241.110
1340.306
在SQL Server中,我需要与excel中相同的顺序。我做错了什么?
答案 0 :(得分:0)
sql-server中的排序按字母顺序排列,'1'排在'2'之前。
要获得与excel相同的排序,我建议您使用数字字段而不是VARCHAR。
答案 1 :(得分:0)
如果在一列中有混合数字和文本,则可以使用它来对数字的数值进行排序。
CREATE TABLE #Temp
(
Data varchar(100)
)
INSERT INTO #Temp VALUES ('241.110')
INSERT INTO #Temp VALUES ('1340.306')
INSERT INTO #Temp VALUES ('b')
INSERT INTO #Temp VALUES ('aa')
INSERT INTO #Temp VALUES ('241.2')
SELECT *
FROM #Temp
ORDER BY
case isnumeric(Data) when 0 then Data end asc,
case isnumeric(Data) when 1 then cast(Data as numeric(10,3)) end asc
结果:
Data
----------
241.110
241.2
1340.306
aa
b
编辑1 第二列将以相同的方式处理。
SELECT *
FROM #Temp
ORDER BY
case isnumeric(Data) when 0 then Data end asc,
case isnumeric(Data) when 1 then cast(Data as numeric(10,3))end asc,
case isnumeric(Data2) when 0 then Data2 end asc,
case isnumeric(Data2) when 1 then cast(Data2 as numeric(10,3))end asc