zoukankan      html  css  js  c++  java
  • SQL 字符串分隔函数

    查询某个 逗号分隔的字段

     select *   from AccInformation a where '启用' in( select * from dbo.fnSplitStr(cCaption,','))
     select * from  dbo.fnSplitStr('1,2,3',',')
    CREATE FUNCTION [dbo].[fnSplitStr] (
        @sText      NVARCHAR(Max),
        @sDelim     CHAR(1)
    )
    
    RETURNS @retArray TABLE (
        value   VARCHAR(100)
    )
    AS
    BEGIN
        DECLARE 
            @posStart        BIGINT,
            @posNext        BIGINT,
            @valLen            BIGINT,
            @sValue            NVARCHAR(100);
    
        IF @sDelim IS NULL 
        BEGIN
            IF LEN(@sText)>100 SET @sText = SUBSTRING(@sText, 1, 100)
            
            INSERT @retArray (value)
            VALUES (@sText);
        END
        ELSE
        BEGIN
            SET @posStart = 1;
    
            WHILE @posStart <= LEN(@sText)
            BEGIN
                SET @posNext = CHARINDEX(@sDelim, @sText, @posStart);
    
                IF @posNext <= 0 
                    SET @valLen = LEN(@sText) - @posStart + 1;
                ELSE
                    SET @valLen = @posNext - @posStart;
    
                SET @sValue = SUBSTRING(@sText, @posStart, @valLen);
                SET @posStart = @posStart + @valLen + 1;
    
                IF LEN(@sValue) > 0
                BEGIN
                    IF LEN(@sValue)>100 SET @sValue = SUBSTRING(@sValue, 1, 100)
                    
                    INSERT @retArray (value)
                    VALUES (@sValue);
                END
            END
        END
        RETURN
    END

    可能报错  

    不是可识别的表提示选项。如果它要作为表值函数或 CHANGETABLE 函数的参数,请确保您的数据库兼容模式设置为 90。

    错误原因:
    兼容性不足

    解决方法:
    选中指定数据库->右键选择“属性”->选项->兼容性级别->选择 SQL Server 2005(90)

  • 相关阅读:
    iOS基础开发集锦
    ARC&&MRC 内存管理
    iOS博客 视频课程网站
    iOS 切图规范
    ipa 重新签名
    企业证书管理
    判断是否有权限访问相机,相册,定位
    iOS 项目优化
    自定义返回按钮
    SVN 地址
  • 原文地址:https://www.cnblogs.com/su-king/p/13433006.html
Copyright © 2011-2022 走看看