select length('10.2') from dual;
我想知道数字10.2的长度是3,但在上面的查询中它显示为4.
什么是正确的查询?
答案 0 :(得分:0)
你有一个根本的误解。 length()
是一个操作字符串的函数。参数是一个字符串,它有四个字符'1','0','。'和'2'。因此,返回值为“4”。
您的查询中没有数字。并且“数字的长度”没有意义,因为长度仅定义为字符串(以及各种大型二进制对象,具体取决于数据库)。
我不确定你要找的是什么“3”,所以我不能为此提出建议。
答案 1 :(得分:0)
你不能直接这样做。您必须先将字符串转换为纯数字值(甚至删除小数点)。您可以在T-SQL中尝试以下代码段:
CREATE FUNCTION dbo.fn_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
;
准备好功能后,您可以使用以下查询:
SELECT len(fn_GetNumeric('10.2'))