select   *   from   dbo.f_split('asdlkfa,asf   as,dda/adfsad','/')     这句ok_________________________________________________________ SELECT [no], name, bmmc, kqrq, SUBSTRING(jzno,1,4) as jznov2,SUBSTRING(jzno,5,1) as jznov3,  f_split('asdlkfa,asf   as,dda/adfsad','/'), jzmc, ycyy
FROM RB200801
WHERE (jzno IS NOT NULL)
order by no这句提示  'f_split' 不是可以识别的 函数名

解决方案 »

  1.   

    SELECT 
    [no], 
    name, 
    bmmc, 
    kqrq, 
    SUBSTRING(jzno,1,4) as jznov2,
    SUBSTRING(jzno,5,1) as jznov3, 
    dbo.f_split('asdlkfa,asf as,dda/adfsad','/'), -- add "dbo."
    jzmc, 
    ycyy
    FROM RB200801
    WHERE (jzno IS NOT NULL)
    order by no 
      

  2.   

    不好意思 加了后提示
    对象名 'dbo.f_split' 无效
      

  3.   

    sorry, only msn:
    [email protected]
      

  4.   

    从select * from dbo.f_split('asdlkfa,asf as,dda/adfsad','/')来看,dbo.f_split()函数返回的是表集合,这样就不能在字段列表中出现,应该将该函数视为一个表
      

  5.   

    dbo.f_split(字符串,分隔符,取第几段的字符)--格式是否正确
      

  6.   

    如:
    create  function F_split(
    @s varchar(8000),       --包含多个数据项的字符串
    @pos int,              --要获取的数据项的位置
    @split varchar(10)     --数据分隔符
    )RETURNS varchar(100)
    AS
    BEGIN
    IF @s IS NULL RETURN(NULL)
    DECLARE @splitlen int --分隔符长度
    SELECT @splitlen=LEN(@split+'a')-2
    WHILE @pos>1 AND charindex(@split,@s+@split)>0
    SELECT @pos=@pos-1,
    @s=stuff(@s,1,charindex(@split,@s+@split)+@splitlen,'')
    RETURN(nullif(left(@s,charindex(@split,@s+@split)-1),''))
    END
    GOselect dbo.F_split('中国/湖南省/长沙市',1,'/') as col1,dbo.F_split('中国/湖南省/长沙市',2,'/') as col2,dbo.F_split('中国/湖南省/长沙市',3,'/') as col3