从列中获取特定的字符数,而不使用函数或存储过程

时间:2010-11-04 14:12:07

标签: sql-server-2005

我在表[SampleTable]上有一个名为[MyColumn]的列,我希望这个字符出现在列上的时间。角色是;

Excel有一个简单的解决方案 = LEN() - LEN(SUBSTITUTE(,“;”,“”))

2 个答案:

答案 0 :(得分:3)

SELECT LEN(MyColumn) - LEN(REPLACE(MyColumn, ';', ''))
FROM SampleTable
WHERE ...

答案 1 :(得分:1)

为了在代码中获得最佳可读性,最好使用UDF。例如,here中的那个:

CREATE FUNCTION [dbo].[ufn_CountChar] ( @pInput VARCHAR(1000), @pSearchChar CHAR(1) )
RETURNS INT
BEGIN

DECLARE @vInputLength        INT
DECLARE @vIndex              INT
DECLARE @vCount              INT

SET @vCount = 0
SET @vIndex = 1
SET @vInputLength = LEN(@pInput)

WHILE @vIndex <= @vInputLength
BEGIN
    IF SUBSTRING(@pInput, @vIndex, 1) = @pSearchChar
        SET @vCount = @vCount + 1

    SET @vIndex = @vIndex + 1
END

RETURN @vCount

END
GO