首页 文章

“Azure移动服务”和“Azure应用服务”之间的不同sql结果

提问于
浏览
0

在Azure移动服务(旧服务)和Azure应用服务(新服务)之间运行相同的SQL语句时,我得到了两个不同的结果

SQL语句是:

SELECT ROW_NUMBER() OVER(ORDER BY score_tot DESC) AS row, score_tot FROM Player

当我使用 request.service.mssql.query() 函数将其作为旧的Azure移动服务运行时,我得到的json结果如下所示:

[{row: 1 ,score_tot:45674},

{row: 2 ,score_tot:21234}]

但是当我使用 request.azureMobile.data.execute(SQL) 函数使用新的Azure应用服务运行相同的SQL语句时,我得到了:

[{row: '1' ,score_tot:45674},

{row: '2' ,score_tot:21234}]

App Service将行列作为字符串/文本返回,而不是像在移动服务中那样返回数字 .

为什么这两个结果之间存在差异?如何将行列作为应用服务中的数字? app服务不应该返回与旧服务相同的SQL语句的相同结果吗?

/ T

1 回答

  • 1

    根据我的经验,node.js的Azure移动应用程序SDK使用node-mssql npm包作为SQL Server驱动程序 . 以下是我的测试截图,似乎 node-mssqlROW_NUMBER() 函数返回varchar值而不是int .
    code snippet

    return result

    作为解决方法,您可以尝试使用以下SQL:

    SELECT CONVERT(INT, ROW_NUMBER() OVER(ORDER BY score_tot DESC)) AS row, score_tot FROM Player
    

相关问题