好的,我想要做的是从字符串中提取十进制值。我的问题是字符串不统一。有些可能是 6.9% 或 5.2mg/L,有些可能根本没有数值。我想要做的是只返回字符串中的十进制(或整数)值,如果不存在则返回 NULL。
我试过这个功能:
CREATE FUNCTION dbo.udf_GetNumeric
(@strAlphaNumeric VARCHAR(256))
RETURNS VARCHAR(256)
AS
BEGIN
DECLARE @intAlpha INT
SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric)
BEGIN
WHILE @intAlpha > 0
BEGIN
SET @strAlphaNumeric = STUFF(@strAlphaNumeric, @intAlpha, 1, '' )
SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric )
END
END
RETURN ISNULL(@strAlphaNumeric,0)
END
Run Code Online (Sandbox Code Playgroud)
但这只会返回没有小数位的数字。