比如
一个定义值变量A为:北京,上海,赣州,南京,天津
下面是查询语句
查询B表A字段等于或包含北京或上海或赣州或南京或天津
怎么实现

解决方案 »

  1.   

    用select form 表 字段 in 内容就行了,你可以试试
      

  2.   


    create table b
    (a varchar(60))insert b select 'A'
    insert b select 'B'
    insert b select 'C'
    insert b select 'D'
    insert b select 'E'declare @str nvarchar(20)
    set @str = 'A,B,C'
    set @str = replace(@str,',',''',''')exec ('select * from b where a in('''+ @str +''')')drop table b
      

  3.   

    这些你都可以试一下!
    --各种字符串分函数if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_splitSTR]') and xtype in (N'FN', N'IF', N'TF'))
    drop function [dbo].[f_splitSTR]
    GO--3.2.1 循环截取法
    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
    /*==============================================*/if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_splitSTR]') and xtype in (N'FN', N'IF', N'TF'))
    drop function [dbo].[f_splitSTR]
    GO--3.2.3.1 使用临时性分拆辅助表法
    CREATE FUNCTION f_splitSTR(
    @s   varchar(8000),  --待分拆的字符串
    @split varchar(10)     --数据分隔符
    )RETURNS @re TABLE(col varchar(100))
    AS
    BEGIN
    --创建分拆处理的辅助表(用户定义函数中只能操作表变量)
    DECLARE @t TABLE(ID int IDENTITY,b bit)
    INSERT @t(b) SELECT TOP 8000 0 FROM syscolumns a,syscolumns b INSERT @re SELECT SUBSTRING(@s,ID,CHARINDEX(@split,@s+@split,ID)-ID)
    FROM @t
    WHERE ID<=LEN(@s+'a') 
    AND CHARINDEX(@split,@split+@s,ID)=ID
    RETURN
    END
    GO/*==============================================*/if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_splitSTR]') and xtype in (N'FN', N'IF', N'TF'))
    drop function [dbo].[f_splitSTR]
    GOif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tb_splitSTR]') and objectproperty(id,N'IsUserTable')=1)
    drop table [dbo].[tb_splitSTR]
    GO--3.2.3.2 使用永久性分拆辅助表法
    --字符串分拆辅助表
    SELECT TOP 8000 ID=IDENTITY(int,1,1) INTO dbo.tb_splitSTR
    FROM syscolumns a,syscolumns b
    GO--字符串分拆处理函数
    CREATE FUNCTION f_splitSTR(
    @s     varchar(8000),  --待分拆的字符串
    @split  varchar(10)     --数据分隔符
    )RETURNS TABLE
    AS
    RETURN(
    SELECT col=CAST(SUBSTRING(@s,ID,CHARINDEX(@split,@s+@split,ID)-ID) as varchar(100))
    FROM tb_splitSTR
    WHERE ID<=LEN(@s+'a') 
    AND CHARINDEX(@split,@split+@s,ID)=ID)
    GO
      

  4.   


    select * from 表 where charindex('北京',字段)>0 or
    charindex('上海',字段)>0 or charindex('鄣州',字段>0) or charindex('天津',字段>0)
      

  5.   

    一个定义值变量A为:北京,上海,赣州,南京,天津 
    下面是查询语句 
    查询B表A字段等于或包含北京或上海或赣州或南京或天津 
    怎么实现
    实现
    a1=北京
    a2=上海
    a3=赣州
    a4=南京
    a5=天津
    后面就是查询
    查询B表A字段等于或包含北京或上海或赣州或南京或天津 
      

  6.   

    select a from b where a in('"&a1&"','"&a2&"','"&a3&"','"&a4&"','"&a5&"')
      

  7.   

    SELECT * FROM TB WHERE CHARINDEX(','+A字段+',',',北京,上海,赣州,南京,天津,')>0
      

  8.   

    怎么把
    A为:北京,上海,赣州,南京,天津 
    拆分成a1=北京 
    a2=上海 
    a3=赣州 
    a4=南京 
    a5=天津