我正在尝试创建一个函数,该函数将从输入中获取一个字符并返回一个小钱。 当输入 '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.]%'
将 @KeepValues = '%[^0-9].%' 更改为 @KeepValues = '%[^0-9.]%'