如何将 VARCHARS 转换为包含其他字符的 decimal/smallmoney

问题描述 投票:0回答:1

我正在尝试创建一个函数,该函数将从输入中获取一个字符并返回一个小钱。 当输入 'kjkh 1.99 hkhj' 时,它会返回这个错误:结果空间不足,无法将 smallmoney 值转换为 varchar。

编辑:我将 RETURNS 更改为 RETURNS SMALLMONEY 并得到 “无法将 char 值转换为 smallmoney。char 值的语法不正确。”

CREATE OR ALTER FUNCTION dbo.StripNonNumerics
(
  @Temp varchar(40)
)
RETURNS VARCHAR
AS
BEGIN

    DECLARE @KeepValues AS VARCHAR(40)
    SET @KeepValues = '%[^0-9].%'
    WHILE PATINDEX(@KeepValues, @Temp) > 0
        SET @Temp = STUFF(@Temp, PATINDEX(@KeepValues, @Temp), 1, '')
    
    RETURN (SELECT CAST(TRIM(@Temp) AS SMALLMONEY));
END;

最终编辑:固定使用 SET @KeepValues = '%[^0-9].%' TO @KeepValues = '%[^0-9.]%'

sql function ssms
1个回答
0
投票

将 @KeepValues = '%[^0-9].%' 更改为 @KeepValues = '%[^0-9.]%'

© www.soinside.com 2019 - 2024. All rights reserved.