zoukankan      html  css  js  c++  java
  • sql 自定義百分比轉換小數函數

    --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')
    

    哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)成功.---Geovin Du(涂聚文)
  • 相关阅读:
    Android清单文件详解(四) ---- backupAgent的用法
    Android清单文件详解(一) ---- 一切从<manifest>开始
    Android OpenGL ES(九)----构建几何物体
    Android OpenGL ES(八)----纹理编程框架
    Android OpenGL ES(七)----理解纹理与纹理过滤
    Android OpenGL ES(六)----进入三维在代码中创建投影矩阵和旋转矩阵
    Android OpenGL ES(五)----进入三维正交投影和透视投影推导
    Android OpenGL ES(四)----调整屏幕的宽高比
    获取验证码按钮点击后,一分钟内不可继续点击
    选择本地图片后,上传前显示在界面上,实现实时预览
  • 原文地址:https://www.cnblogs.com/geovindu/p/2165544.html
Copyright © 2011-2022 走看看