我sql2000的查询分析器里面执行如下代码(定义函数+调用函数):
CREATE function Get_StrArrayLength
(
  @str varchar(1024),  --要分割的字符串
  @split varchar(10)  --分隔符号
)
returns int
as
begin
  declare @location int
  declare @start int
  declare @length int  set @str=ltrim(rtrim(@str))
  set @location=charindex(@split,@str)
  set @length=1
  while @location<>0
  begin
    set @start=@location+1
    set @location=charindex(@split,@str,@start)
    set @length=@length+1
  end
  return @length
end
select dbo.Get_StrArrayLength('78,1,2,3',',') as  '长度'
为什么总是显示
select dbo.Get_StrArrayLength('78,1,2,3',',') as  '长度'
这一句话是错误的呢?

解决方案 »

  1.   


    CREATE function Get_StrArrayLength
    (
      @str varchar(1024),  --要分割的字符串
      @split varchar(10)  --分隔符号
    )
    returns int
    as
    begin
      declare @location int
      declare @start int
      declare @length int  set @str=ltrim(rtrim(@str))
      set @location=charindex(@split,@str)
      set @length=1
      while @location<>0
      begin
        set @start=@location+1
        set @location=charindex(@split,@str,@start)
        set @length=@length+1
      end
      return @length
    end
    GO      --加上GO
    select dbo.Get_StrArrayLength('78,1,2,3',',') as  '长度'
      

  2.   

    這個其實有簡單的方法Declare @S Varchar(1000)
    Select @S = '78,1,2,3'
    Select Len(@S) - Len(Replace(@S, ',', '')) + 1 As  '长度'
    --4