sql - 错误 :: “在动态 SQL 中将 nvarchar 值“谷物”转换为数据类型 int 时转换失败”
问题描述
我正在尝试在动态 SQL 中按 Id 对我的表“排序”,尽管它可以使用Name
和Description
(两种类型 Nvarchar),如图所示但不能使用Id
(类型 INT),这是我的动态 SQL 查询
';With data AS (Select P.Id,
P.Name,
P.Description,
P.Price,
12 AS ActiveUsers,
B.Name as BillingPeriod,
CASE '+@SortField+'
WHEN P.Name THEN ROW_NUMBER() OVER (ORDER BY P.Name)
WHEN Description THEN ROW_NUMBER() OVER (ORDER BY P.Description)
WHEN P.Id THEN ROW_NUMBER() OVER (ORDER BY P.Id) *****This Line Gives Error*****
END rn '
--- REST of The SP ---
该行给出跟随错误
将 nvarchar 值 'cereals' 转换为数据类型 int 时转换失败。
我打印 SQL 它显示...
CASE P.Id
WHEN P.Name THEN ROW_NUMBER() OVER (ORDER BY P.Name)
WHEN Description THEN ROW_NUMBER() OVER (ORDER BY P.Description)
WHEN P.Id THEN ROW_NUMBER() OVER (ORDER BY P.Id)
END rn From Products P
请帮帮我,我是 sql 新手。
解决方案
您可以将整个 CASE 表达式替换为 ...
';With data AS (Select P.Id,
P.Name,
P.Description,
P.Price,
12 AS ActiveUsers,
B.Name as BillingPeriod,
ROW_NUMBER() OVER (ORDER BY '+@SortField+')'
--- REST of The SP ---
推荐阅读
- c - 在函数中传递地址后指向垃圾值的指针
- python - 后台任务不等待机器人准备好
- java - Whatsapp 自动发送消息而无需单击 android 上的发送按钮
- c++ - 如果我最终需要获取 char 指针,我可以安全地使用 string_view 吗?
- reactjs - 如何使用 react beautiful dnd 将任务项移动到初始列之外?
- sql - 仅从重复项中检索最低行
- linux - 为什么 file->private_data 不返回您的上下文数据?
- access-denied - 我无法在 cmd 中运行命令访问被拒绝以管理员身份
- linux-kernel - Linux 中的系统调用表会随时间变化吗?
- visual-studio-code - 如何在 VS Code 中指定选择前景(没有高对比度主题)?