我正在更新使用经典asp并使用过SQL Server 2003的旧网站。sortorder
列存储为varchar
。
以下用于将varchar
列转换为int
,然后可以在输出中对其进行排序(1-20数字)。现在返回的记录来自" 1"至" 10"然后" 11"它仍然将它们视为varchar
。
我是否需要将经典的asp文件转换为SQL Server 2014的新功能?我已经尝试过转换,然后解析。
RQ="Select *, convert(int, sortorder) from table Where theid=1 order by sortorder"
Set rs = Connect.Execute(Rq)
感谢您提供的任何帮助。我已在此处检查了答案,但无法通过Classic ASP查找更新的SQL Server数据库。
答案 0 :(得分:3)
您需要在INT
子句中转换为ORDER BY
,以便正确排序:
RQ = "Select * from table Where theid=1 order by convert(int, sortorder)"
Set rs = Connect.Execute(Rq)
只需在SELECT
的列列表中进行转换即可帮助...
答案 1 :(得分:1)
answer提供的@marc_s是正确的。我只是想详细说明如何处理SQL查询中的转换以避免这些类型的问题。
因此,您不必多次指定CONVERT(INT, sortorder)
一个简单的查询包装,以便于使用。
SELECT t.*
FROM (
-- List only the columns required.
SELECT [col1], [col2], ... , CONVERT(INT, sortorder) [sortorder]
FROM [table]
WHERE [theid] = 1
) t
ORDER BY t.sortorder
理想情况下,@marc_s有pointed out更好的数据库设计会否定对此类解决方案的需求。