Sql server 2005 在不使用函数或存储过程的情况下,从列中获取字符的特定计数

Sql server 2005 在不使用函数或存储过程的情况下,从列中获取字符的特定计数,sql-server-2005,Sql Server 2005,我在表[SampleTable]上有一个名为[MyColumn]的列,我想知道这个字符在该列上出现的时间。性格是 Excel对此有一个简单的解决方案 =LEN()-LEN(替换(,“;”,”)为了使代码具有最佳可读性,最好使用UDF。例如,来自: 创建函数[dbo].[ufn_CountChar](@pInput VARCHAR(1000),@pSearchChar(1)) 返回整数 开始 声明@vInputLength INT 声明@vIndex INT 声明@vCount INT 设置@vC

我在表[SampleTable]上有一个名为[MyColumn]的列,我想知道这个字符在该列上出现的时间。性格是

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

为了使代码具有最佳可读性,最好使用UDF。例如,来自:

创建函数[dbo].[ufn_CountChar](@pInput VARCHAR(1000),@pSearchChar(1))
返回整数
开始
声明@vInputLength INT
声明@vIndex INT
声明@vCount INT
设置@vCount=0
设置@vIndex=1
设置@vInputLength=LEN(@pInput)

而@vIndex为了在代码中获得最佳可读性,最好使用UDF。例如,来自:

创建函数[dbo].[ufn_CountChar](@pInput VARCHAR(1000),@pSearchChar(1))
返回整数
开始
声明@vInputLength INT
声明@vIndex INT
声明@vCount INT
设置@vCount=0
设置@vIndex=1
设置@vInputLength=LEN(@pInput)
而@vIndex
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
SELECT LEN(MyColumn) - LEN(REPLACE(MyColumn, ';', ''))
FROM SampleTable
WHERE ...