将小数字符串转换为十进制

特姆伍德

我有一些列,这些列的值要么是小数字符串(即6 11/32),要么是小数(1.5)。是否存在可以将其转换为一致的小数CASTCONVERT调用?

错误:

消息8114,级别16,状态5,第1行将数据类型varchar转换为数值时出错。

我可以避免进行任何形式的解析吗?

谢谢!

PS我在工作SQL Server Management Studio 2012

斯蒂芬·波丁(Stephen Bodine)
CREATE FUNCTION ufn_ConvertToNumber(@STR VARCHAR(50))
RETURNS decimal(18,10)
AS
BEGIN
        DECLARE @L VARCHAR(50) = ''
        DECLARE @A DECIMAL(18,10) = 0
        SET @STR = LTRIM(RTRIM(@STR)); -- Remove extra spaces
        IF ISNUMERIC(@STR) > 0 SET @A = CONVERT(DECIMAL(18,10), @STR) -- Check to see if already real number
        IF CHARINDEX(' ',@STR,0) > 0
        BEGIN
            SET @L = SUBSTRING(@STR,1,CHARINDEX(' ',@STR,0) - 1 )
            SET @STR = SUBSTRING(@STR,CHARINDEX(' ',@STR,0) + 1 ,50 )
            SET @A = CONVERT(DECIMAL(18,10), @L)
        END
        IF CHARINDEX('/',@STR,0) > 0
        BEGIN
            SET @L = SUBSTRING(@STR,1,CHARINDEX('/',@STR,0) - 1 )
            SET @STR = SUBSTRING(@STR,CHARINDEX('/',@STR,0) + 1 ,50 )
            SET @A =  @A + ( CONVERT(DECIMAL(18,10), @L) / CONVERT(DECIMAL(18,10), @STR)  )
        END
        RETURN @A
END
GO

然后通过选择dbo.ufn_ConvertToNumber('5 9/5')访问它

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将字符串转换为十进制(“ 3942.000000000000”)

将十进制数字字符串转换为BCD的算法

使用 JavaScript 手动将十进制字符串转换为数字

C#通过分隔数字将十进制转换为字符串

将十进制数字从字符串转换为双精度

如何将ASCII字符串转换为十进制数字?

将数字(整数或十进制)转换为数组,将数组转换为数字(整数或十进制),而无需使用字符串

在javascript中,如何将十进制(带小数点)转换为十六进制字符串

使用递归将二进制数字的字符串转换为十进制数字...

将字符串转换为十进制以始终具有2个小数位

Javascript如何将十进制数转换为具有特定小数位数的字符串

将字符串转换为十六进制,十进制和八进制

将ASCII字符串转换为十进制等效字符串-Java / Android

将字符串表示形式转换为最小数字对象

R:在字符串中将小数转换为十进制

Csharp - 将单个转换为十进制而不转换为字符串

如何防止JSONObject来自json.jar将十进制数字字符串转换为double

将float转换为具有精度和指定的十进制数字的字符串?

将字符串转换为十进制?(可扩展的十进制)(通过扩展方法)

将二进制字符串转换为十进制

Python将十六进制字符串转换为十进制值

C程序将十进制数转换为二进制字符串

将十进制NSString转换为十六进制字符串

如何将二进制字符串转换为十进制?

将二进制字符串转换为十进制

Spark:将十六进制字符串转换为十进制

如何将二进制字符串值转换为十进制

将十六进制字符串转换为十进制整数

Java将二进制字符串转换为十进制