14第1贴,关于这种sql语句怎么写,控制字符串拼接显示

pingkeke 2014-01-02 10:32:04
DECLARE @maxinumValue DECIMAL(18,5) --控制的值
DECLARE @unitFormat VARCHAR(50) --单位
DECLARE @scale INT --小数位
DECLARE @result VARCHAR(100) --结果值

SET @maxinumValue = 19.80000 --控制的值
SET @unitFormat = '%' --单位
SET @scale = 2 --小数位

--怎么控制@result的显示结果:
--@result 的结果: @maxinumValue根据@scale保留2位小数位,并加上@unitFormat单位进行显示
--最终显示结果是19.80% ,这个在sql中如何很好的实现
...全文
102 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞啊子 2014-01-02
  • 打赏
  • 举报
回复
如果 楼主 小数位不要做成 可配置的。。 代码可如下:


DECLARE @maxinumValue DECIMAL(18,5) --控制的值
DECLARE @unitFormat VARCHAR(50) --单位
DECLARE @scale INT  --小数位
DECLARE @result VARCHAR(100) --结果值

SET @maxinumValue = 19.80000 --控制的值
SET @unitFormat = '%' --单位
SET @scale = 2 --小数位
               --
               


SELECT ltrim(cast(@maxinumValue AS DECIMAL(18,2)))+@unitFormat
LongRui888 2014-01-02
  • 打赏
  • 举报
回复
DECLARE @maxinumValue DECIMAL(18,5) --控制的值
DECLARE @unitFormat VARCHAR(50) --单位
DECLARE @scale INT  --小数位
DECLARE @result VARCHAR(100) --结果值

SET @maxinumValue = 19.80000 --控制的值
SET @unitFormat = '%' --单位
SET @scale = 2 --小数位

select @result = stuff(cast(@maxinumValue as varchar),charindex('.',cast(@maxinumValue as varchar))+3,len(100),'')+'%'
                
select @result
/*
19.80%
*/
chestnut 2014-01-02
  • 打赏
  • 举报
回复
引用 3 楼 journeysxy 的回复:
DECLARE @maxinumValue DECIMAL(18,5) --控制的值
DECLARE @unitFormat VARCHAR(50) --单位
DECLARE @scale INT  --小数位
DECLARE @result VARCHAR(100) --结果值

SET @maxinumValue = 19.80000 --控制的值
SET @unitFormat = '%' --单位
SET @scale = 2 --小数位

select @result=substring(cast(round(@maxinumValue,@scale) as varchar(100)),1,CHARINDEX('.',@maxinumValue,1)+2)+@unitFormat
print(@result)
--结果如下
19.80%
修改了下
DECLARE @maxinumValue DECIMAL(18,5) --控制的值
DECLARE @unitFormat VARCHAR(50) --单位
DECLARE @scale INT  --小数位
DECLARE @result VARCHAR(100) --结果值

SET @maxinumValue = 19.80000 --控制的值
SET @unitFormat = '%' --单位
SET @scale = 2 --小数位

select @result=substring(cast(round(@maxinumValue,@scale) as varchar(100)),1,CHARINDEX('.',@maxinumValue,1)+@scale)+@unitFormat
print(@result)
發糞塗牆 2014-01-02
  • 打赏
  • 举报
回复
转换成字符型再加%
chestnut 2014-01-02
  • 打赏
  • 举报
回复
DECLARE @maxinumValue DECIMAL(18,5) --控制的值
DECLARE @unitFormat VARCHAR(50) --单位
DECLARE @scale INT  --小数位
DECLARE @result VARCHAR(100) --结果值

SET @maxinumValue = 19.80000 --控制的值
SET @unitFormat = '%' --单位
SET @scale = 2 --小数位

select @result=substring(cast(round(@maxinumValue,@scale) as varchar(100)),1,CHARINDEX('.',@maxinumValue,1)+2)+@unitFormat
print(@result)
--结果如下
19.80%
Andy__Huang 2014-01-02
  • 打赏
  • 举报
回复

DECLARE @maxinumValue DECIMAL(18,5) --控制的值
DECLARE @unitFormat VARCHAR(50) --单位
DECLARE @scale INT  --小数位
DECLARE @result VARCHAR(100) --结果值

SET @maxinumValue = 19.80000 --控制的值
SET @unitFormat = '%' --单位
SET @scale = 2 --小数位

declare @sql varchar(1000)
set @sql='SELECT ltrim(CAST('+CAST(@maxinumValue AS VARCHAR)+' AS DECIMAL(18,'+CAST(@scale AS VARCHAR)+')))+''%'' AS result'
exec (@sql)

/*
result
19.80%
*/
Yole 2014-01-02
  • 打赏
  • 举报
回复

DECLARE @maxinumValue DECIMAL(18,5) --控制的值
DECLARE @unitFormat VARCHAR(50) --单位
DECLARE @scale INT  --小数位
DECLARE @result VARCHAR(100) --结果值

SET @maxinumValue = 19.80000 --控制的值
SET @unitFormat = '%' --单位
SET @scale = 2 --小数位

select substring(cast(@maxinumValue as varchar(20)),1,  patindex('%.%',cast(@maxinumValue as varchar(20)))+2) + @unitFormat

---------------------------------------------------------------------- 19.80% (1 行受影响)

34,588

社区成员

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

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