CREATE FUNCTION f_splitSTR(
@s   varchar(8000),   --待分拆的字符串
@split varchar(10)     --数据分隔符
)RETURNS @re TABLE(col varchar(100))
AS
BEGIN
DECLARE @splitlen int
SET @splitlen=LEN(@split+'a')-2
WHILE CHARINDEX(@split,@s)>0
BEGIN
INSERT @re VALUES(LEFT(@s,CHARINDEX(@split,@s)-1))
SET @s=STUFF(@s,1,CHARINDEX(@split,@s)+@splitlen,'')
END
INSERT @re VALUES(@s)
RETURN
END
GO
SELECT   dbo.f_splitstr('dfdfdfdfadfegegege','a') 
报错:
服务器: 消息 208,级别 16,状态 1,行 3
对象名 'dbo.f_splitstr' 无效。

解决方案 »

  1.   

    CREATE FUNCTION dbo.f_splitSTR()--加dbo.
      

  2.   

    SELECT * FROM   dbo.f_splitstr('dfdfdfdfadfegegege','a') 
      

  3.   

    SELECT * FROM  dbo.f_splitSTR('dfdfdfdfadfegegege','a') 
    返回的是表变量
      

  4.   

    表值函数不能直接SELECT DBO.函数名。
      

  5.   

    CREATE FUNCTION f_splitSTR(
    @s   varchar(8000),   --待分拆的字符串
    @split varchar(10)     --数据分隔符
    )RETURNS @re TABLE(col varchar(100))
    AS
    BEGIN
        DECLARE @splitlen int
        SET @splitlen=LEN(@split+'a')-2
        WHILE CHARINDEX(@split,@s)>0
        BEGIN
            INSERT @re VALUES(LEFT(@s,CHARINDEX(@split,@s)-1))
            SET @s=STUFF(@s,1,CHARINDEX(@split,@s)+@splitlen,'')
        END
        INSERT @re VALUES(@s)
        RETURN
    END
    GO
    SELECT * FROM   dbo.f_splitstr('dfdfdfdfadfegegege','a') 
    /*
    col
    ----------------------------------------------------------------------------------------------------
    dfdfdfdf
    dfegegege(2 行受影响)
    */
      

  6.   


    CREATE FUNCTION  dbo.f_splitSTR(
    @s   varchar(8000),   --待分拆的字符串
    @split varchar(10)     --数据分隔符
    )RETURNS @re TABLE(col varchar(100))
    AS
    BEGIN
    DECLARE @splitlen int
    SET @splitlen=LEN(@split+'a')-2
    WHILE CHARINDEX(@split,@s)>0
    BEGIN
    INSERT @re VALUES(LEFT(@s,CHARINDEX(@split,@s)-1))
    SET @s=STUFF(@s,1,CHARINDEX(@split,@s)+@splitlen,'')
    END
    INSERT @re VALUES(@s)
    RETURN
    END
    GO
    SELECT   dbo.f_splitstr('dfdfdfdfadfegegege','a') 

    服务器: 消息 208,级别 16,状态 1,行 1
    对象名 'dbo.f_splitstr' 无效。
      

  7.   

    SELECT   dbo.f_splitstr('dfdfdfdfadfegegege','a') 
    改成
    SELECT  * FROM  dbo.f_splitstr('dfdfdfdfadfegegege','a') 
      

  8.   


    7楼TONY哥都写出来了