zoukankan      html  css  js  c++  java
  • 巧用函数,使Sql中in的用法更多变

    在Sql中我们经常会用到in

    普遍的写法为

     where xx in ('1','2','3')

    通过函数写法为:

    IF EXISTS ( SELECT *
    FROM sys.objects
    WHERE object_id = OBJECT_ID(N'[dbo].[ArrayToTable]') 
    AND type IN ( N'FN', N'IF', N'TF', N'FS', N'FT' ) ) 
    DROP FUNCTION [dbo].[ArrayToTable]
    GO
    
    create function ArrayToTable(@arrayList varchar(2000),@split varchar(2))
    returns @result table(subscript int,value char(200))
    as
     begin
     declare @i int,
     @index int
     set @i = 0
     set @index = charindex(@split,@arrayList)
     while(@index <> 0)
     begin
     insert into @result(subscript,value)
     values(@i,substring(@arrayList,1,@index-1))
     set @arrayList = stuff(@arrayList,1,@index,'')
     set @index = charindex(@split,@arrayList)
     set @i = @i+1
     end
     insert into @result(subscript,value)
     values(@i,@arrayList)
     return
     end


    declare @lineData varchar(200)
    set @lineData='1,2,3,4'

    where (@lineData is null or XX in (select value from dbo.ArrayToTable(@lineData,',')))

    作者:Joe.Fan
             
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    awk查看本机IP+查看本网段mac
    wget
    kvm安装,使用,优化
    方向
    bindview+dlz(mysql)
    页面侧滑栏效果
    数据库的事务理解
    页面平衡移动进出的效果
    返回键弹出是否退出对话框
    引导页之页面等待3秒跳转
  • 原文地址:https://www.cnblogs.com/fanxingthink/p/4176154.html
Copyright © 2011-2022 走看看