在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 回答
根据我的经验,node.js的Azure移动应用程序SDK使用node-mssql npm包作为SQL Server驱动程序 . 以下是我的测试截图,似乎
node-mssql
让ROW_NUMBER()
函数返回varchar值而不是int .作为解决方法,您可以尝试使用以下SQL: