• SQL in(x,y,z)时自动补全单引号


    由于项目中经常会用到在查询SQL的时候用到 字段 in( xx ) 的情况,但是每次在组织SQL的时候都会 大量使用 "'"+ x + "'" 这样写代码无疑非常操蛋。

    所以我想到不如直接带入所有参数格式为 a,b,c 不用 ' 符号, 然后在SQL里面写一个函数将 a,b,c 分解为 'a','b','c' 或者分解为一个表也可以让in成立。

    一、a,b,c 组合为 'a','b','c'

      

    -----------------------------string
    DECLARE @INPUT NVARCHAR(200) 
    DECLARE @CHAR NVARCHAR(200) = ','
    DECLARE @RESULT NVARCHAR(200)  = ''
    DECLARE @INPUTLENGTH INT
    SET @INPUT = 'my,name,is,afei'
    SET @INPUTLENGTH = LEN(@INPUT)
    
    WHILE CHARINDEX(@CHAR,@INPUT) <> 0
    BEGIN 
        -- 截取一个到','的字符串x 并格式成 'x' 
        SELECT @RESULT += char(39)  + substring(@INPUT,1,CHARINDEX(@CHAR,@INPUT)-1)+ char(39)+ @CHAR
        -- 截取被截取后的字符串
        ,@INPUT = SUBSTRING(@INPUT,CHARINDEX(@CHAR,@INPUT,0)+LEN(@CHAR),LEN(@INPUT))
        
        -- 当最后截取的字符串为不包含隔断符号','时,直接加上单引号返回
        IF CHARINDEX(@CHAR,@INPUT) = 0
            SELECT @RESULT += char(39) + @INPUT+ char(39)
            RETURN @RESULT
    END    
    a,b,c 分

     二、a,b,c 分解为表

    -----------------------------table
    DECLARE @CHAR NVARCHAR(200) 
    DECLARE @INPUT NVARCHAR(200)
    DECLARE @List TABLE (item VARCHAR(8000))
    
    SET @CHAR = ','
    SET @INPUT = 'my,name,is,afei'
    
    BEGIN
        DECLARE @sItem VARCHAR(8000)
        WHILE CHARINDEX(@CHAR,@INPUT,0) <> 0 
        BEGIN 
            -- 截取一个到','的字符串
            SELECT  @sItem=SUBSTRING(@INPUT,1,CHARINDEX(@CHAR,@INPUT,0)-1),
            -- 截取被截取后的字符串
            @INPUT=SUBSTRING(@INPUT,CHARINDEX(@CHAR,@INPUT,0)+LEN(@CHAR),LEN(@INPUT))
            
            IF LEN(@sItem) > 0  
                INSERT INTO @List SELECT @sItem 
        END
        -- 添加最后一个字符串
        IF LEN(@INPUT) > 0 
            INSERT INTO @List SELECT @INPUT
        RETURN
    END
  • 相关阅读:
    js-事件总结
    iquery-个人总结
    CSS3-页面样式
    野生码农狂奔中的2014年度年终总结
    算不算被虚度的这几年
    在Ubuntu 12.4 下安装 nginx, MySQL, PHP
    使用WP8最新的AudioVideoCaptureDevice类制作录像应用
    WP8 MediaElement 实现循环播放
    WPF(WP7、WP8)多个Listbox嵌套时滚动问题的解决
    Weibo SDK WP版本回调参数没有uid的解决方法
  • 原文地址:https://www.cnblogs.com/leeafei/p/6386241.html
Copyright © 2020-2023  润新知