SQL用于逗号分隔输入

时间:2014-04-01 06:09:19

标签: sql sql-server-2008

我想编写一个存储过程,我想在其中运行多个输入的查询,该查询以逗号分隔的字符串形式出现。就像我们in完全匹配一样,我也可以拥有like in吗?

输入:

51094,51096,512584

尝试:

select * from table where column like ('%51094%','%51096%','%512584%')

我的查询应遍历每个输入并获取与模式匹配的列。

我已经尝试过以下内容:

Contains(Column, '"*51094*" or "*51096*" or "*512584*")  

但现在无法配置自由文本搜索。

来源:Is there a combination of "LIKE" and "IN" in SQL?

所有建议类型:How to use SQL LIKE condition with multiple values in PostgreSQL?

似乎无效。

请提出一个简单的方法。

3 个答案:

答案 0 :(得分:0)

首先尝试爆炸输入

$arr = explode($Input,",");
column like "%".$arr[0]."%" OR
column like "%".$arr[1]."%" OR
column like "%".$arr[2]."%"

答案 1 :(得分:0)

这个功能你可以使用,没有任何强制性的逗号只能给你特殊的性格。

ALTER函数[dbo]。[SplitString](@ String nvarchar(4000),@ Delimiter char(1)) 返回@Results表(Items nvarchar(50)) 如 开始 声明@Index int 声明@name nvarchar(20) 声明@Slice nvarchar(50)

选择@Index = 1 如果@String为NULL返回

虽然@Index!= 0 开始 选择@Index = CharIndex(@Delimiter,@ String) 如果@Index<> 0

选择@Slice = left(@String,@ Index - 1)

否则

选择@Slice = @String 插入@Results(Items)值(@Slice) 选择@String = right(@ String,Len(@String) - @Index)

如果Len(@String)= 0 break

结束 返回 端

答案 2 :(得分:0)

将项目循环并完成。

Select * into #temp_inputIds from dbo.Split(@InputIds,',')

    DECLARE @ID varchar (50)
    DECLARE IDs CURSOR LOCAL FOR select items from #temp_inputIds

    OPEN IDs
    FETCH NEXT FROM IDs into @ID
    WHILE @@FETCH_STATUS = 0
    BEGIN



    Select @SQL = 'Select component_id,'+@ID+' as pub_id from component_presentations where CONTENT like ''%' + @ID + '%'''



    FETCH NEXT FROM IDs into @ID
    END

    CLOSE IDs
    DEALLOCATE IDs