我想编写一个存储过程,我想在其中运行多个输入的查询,该查询以逗号分隔的字符串形式出现。就像我们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?
似乎无效。
请提出一个简单的方法。
答案 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