Sql server 2005 在不使用函数或存储过程的情况下,从列中获取字符的特定计数
我在表[SampleTable]上有一个名为[MyColumn]的列,我想知道这个字符在该列上出现的时间。性格是 Excel对此有一个简单的解决方案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
=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 ...