sql数据转换

北冥小渔夫 2020-08-17 10:43:57
convert(decimal(a,b)) 第二个参数必须是固定值吗?
需求 : a表字段的小数位长度,根据b表设置的值来确定

提示 'b' 附近有语法错误。
如果decimal第二个值必须固定的值,需求该怎么实现?

CREATE TABLE [dbo].[convert1](
[id] [int] NULL,
[val] [float] NULL,
[cl] [int] NULL
) ON [PRIMARY]

INSERT INTO convert1
SELECT 1,12.34,2 UNION ALL
SELECT 2,0.35,3 UNION ALL
SELECT 3,1.983,3 UNION ALL
SELECT 4,0.123,3

CREATE TABLE [dbo].[convet2](
[id] [int] NULL,
[ct] [int] NULL
) ON [PRIMARY]

INSERT INTO convet2
SELECT 1,2 UNION ALL
SELECT 2,5 UNION ALL
SELECT 3,6 UNION ALL
SELECT 4,4
...全文
108 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 版主 2020-08-18
  • 打赏
  • 举报
回复
做不到的事情,不要强求了。 按最大的小数位数来吧。
  • 打赏
  • 举报
回复

ROUND(a.val,b.ct)
返回一个数值,舍入到指定的长度或精度。
qq_25073223 2020-08-18
  • 打赏
  • 举报
回复
动态拼接字符串呢?
zjcxc 元老 2020-08-18
  • 打赏
  • 举报
回复
对于关系型数据库来说,列的类型是固定的,也就是说,你的这个返回的 convert 的结果,是一个固定类型,所以不可能是多种不同的小数位(那是多种类型定义了)
qq_25073223 2020-08-18
  • 打赏
  • 举报
回复
qq_25073223 2020-08-18
  • 打赏
  • 举报
回复
我觉得使用枚举化变相实现此需求,你可以试一下 按表中的位数对小数位进行转换的示例

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧