首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >sql 自定義百分比轉換小數函數

sql 自定義百分比轉換小數函數

作者头像
geovindu
发布2026-06-18 13:04:55
发布2026-06-18 13:04:55
770
举报
代码语言:javascript
复制
--CAST 和 CONVERT 函数 Percentage
DECLARE @dec decimal(5,3), @var varchar(10),@hun decimal(5,1)
set @dec=0.025
set @hun=@dec*100
set @var=cast(@hun as varchar(20))+'%'
select @var

---小數轉化為百分數函數 GetPercentageString
---塗聚文 Geovin Du
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GetPercentageString]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[GetPercentageString]
GO
CREATE   function  GetPercentageString
(  
	@dec decimal(10,3)
)
returns varchar(20)
AS
BEGIN
  DECLARE @var varchar(10),@hun decimal(10,1)
        SET @hun=@dec*100
	SET @var=cast(@hun as varchar(20))+'%'
	RETURN @var
END
GO
--測試數據 塗聚文 Geovin Du
SELECT [dbo].[GetPercentageString] (0.05)
SELECT [dbo].[GetPercentageString] (0.25)
SELECT [dbo].[GetPercentageString] (1.25)

--1. 查询字符串中是否包含非数字字符
SELECT PATINDEX('%[^0-9]%', '1235X461')
SELECT PATINDEX('%[^0-9]%', '12350461')
--2. 查询字符串中是否包含数字字符
SELECT PATINDEX('%[0-9]%', 'SUYLLGoO')
SELECT PATINDEX('%[0-9]%', 'SUYLLG0O')


DECLARE @dec decimal(10,4), @var varchar(10),@hun decimal(10,4),@I INT,@K INT,@S VARCHAR(20)
SET @var='5.23%'
--SELECT @K=LEN(@var)
--SELECT @S=LEFT(@var,@K-1)
SELECT @S=RIGHT(@var,1)
--SELECT @S
SELECT @I=CHARINDEX('%',@S)
IF @I>0
   BEGIN
	SET @var=REPLACE(@var,'%','')
	SET @hun=CAST(@var AS decimal(10,4))
	SET @dec=@hun/100
	SELECT @dec
   END
ELSE
   BEGIN
	SELECT @dec=NULL --'無效數據'
   END
   

--百分數轉化為小數函數 GetPercentageNumber
---塗聚文 Geovin Du
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GetPercentageNumber]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[GetPercentageNumber]
GO
CREATE   function  GetPercentageNumber
(  
	@var varchar(10)
)
returns decimal(10,4)
AS
BEGIN
  DECLARE  @dec decimal(10,4), @hun decimal(10,4),@I INT,@K INT,@S VARCHAR(20)
	SELECT @S=RIGHT(@var,1)
	--SELECT @S
	SELECT @I=CHARINDEX('%',@S)
IF @I>0
   BEGIN
	SET @var=REPLACE(@var,'%','')
	SET @hun=CAST(@var AS decimal(10,4))
	SET @dec=@hun/100
	--SELECT @dec
   END
ELSE
   BEGIN
	SELECT @dec=NULL --'無效數據'
   END
RETURN @dec
END
GO
--測試數據 塗聚文 Geovin Du
SELECT [dbo].[GetPercentageNumber] ('5.23%')

SELECT [dbo].[GetPercentageNumber] ('%0.23')
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2026-06-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档