SQL 计算字符串中的数字
SQL Count digits in a string
我有table以下信息。
description: adjkfa34kj34kj33j4k3jk4
description: adfkjjkdf34_3434kjkjkj3
description: akjdfkjadfkjadkjfkjadfj
description: 34394394093040930949039
我如何编辑下面的 SQL 查询来计算字符串中的位数(即 [0-9])?
select description as num_count
from posts;
一种方法是去掉所有其他字符:
select length(regexp_replace(description, '[^0-9]', '', 'g'))
试试这个,
CREATE FUNCTION dbo.udf_GetNumeric
(
@strAlphaNumeric VARCHAR(256)
)
RETURNS VARCHAR(MAX)
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 @strAlphaNumeric
END
GO
/*For Example,*/
SELECT LEN(dbo.udf_GetNumeric('') )
SELECT LEN(dbo.udf_GetNumeric('asdf1234a1s2d3f4@@@') )
SELECT LEN(dbo.udf_GetNumeric('123ghdfhdhh456'))
SELECT LEN(dbo.udf_GetNumeric(NULL) )
SELECT LEN(dbo.udf_GetNumeric(描述)) AS num_count
来自帖子;
我在 presto 中使用了以下内容:
SELECT CARDINALITY(REGEXP_EXTRACT_ALL('a123', '\d')) -- returns 3
我有table以下信息。
description: adjkfa34kj34kj33j4k3jk4
description: adfkjjkdf34_3434kjkjkj3
description: akjdfkjadfkjadkjfkjadfj
description: 34394394093040930949039
我如何编辑下面的 SQL 查询来计算字符串中的位数(即 [0-9])?
select description as num_count
from posts;
一种方法是去掉所有其他字符:
select length(regexp_replace(description, '[^0-9]', '', 'g'))
试试这个,
CREATE FUNCTION dbo.udf_GetNumeric
(
@strAlphaNumeric VARCHAR(256)
)
RETURNS VARCHAR(MAX)
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 @strAlphaNumeric
END
GO
/*For Example,*/
SELECT LEN(dbo.udf_GetNumeric('') )
SELECT LEN(dbo.udf_GetNumeric('asdf1234a1s2d3f4@@@') )
SELECT LEN(dbo.udf_GetNumeric('123ghdfhdhh456'))
SELECT LEN(dbo.udf_GetNumeric(NULL) )
SELECT LEN(dbo.udf_GetNumeric(描述)) AS num_count 来自帖子;
我在 presto 中使用了以下内容:
SELECT CARDINALITY(REGEXP_EXTRACT_ALL('a123', '\d')) -- returns 3