使用SQL Server 2014的SQL查询中经典的asp将varchar转换为int

时间:2015-03-17 19:44:37

标签: sql-server asp-classic sql-server-2014

我正在更新使用经典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数据库。

2 个答案:

答案 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_spointed out更好的数据库设计会否定对此类解决方案的需求。