基本上我有一个字符串传递给变量..说
@MyParameter = "Flower Beer Dog"
所以我想要做的就是找到包含“Flower”,“Beer”或“Dog”的所有记录
如果我说的话就像是
select * from myTable where myColumn = 'Flower' or myColumn = 'Beer' or myColumn = 'Dog'
但问题是我在@MyParameter
中获取它并且我不确定如何拆分它并将其转换为上面的查询
答案 0 :(得分:1)
这将返回一个表,该表将分隔的字符串显示为单独的字段。即:“花啤酒狗”成为
花
啤酒
狗
该函数使用逗号分隔而不是空格,但如果需要,可以更改该部分。
CREATE Function [dbo].[ParseStringList] (@StringArray nvarchar(max) )
Returns @tbl_string Table (ParsedString nvarchar(max)) As
BEGIN
DECLARE @end Int,
@start Int
SET @stringArray = @StringArray + ','
SET @start=1
SET @end=1
WHILE @end<Len(@StringArray)
BEGIN
SET @end = CharIndex(',', @StringArray, @end)
INSERT INTO @tbl_string
SELECT
Substring(@StringArray, @start, @end-@start)
SET @start=@end+1
SET @end = @end+1
END
RETURN
END
然后你就这样使用它:
SELECT *
FROM table
WHERE searchfield In (Select ParsedString From dbo.ParseStringList(@StringArray))
答案 1 :(得分:1)
你可以使用LIKE
做这样的事情 -
select * from myTable
where '|' + REPLACE(@MyParameter,' ','|') + '|'
like '%|' + myColumn + '|%'
从这个问题中采取的技巧 - Parameterize an SQL IN clause
答案 2 :(得分:0)
您可能需要查看以下有关SQL中字符串拆分的帖子。从那里,您可以使用返回的值来检查您的表:
How do I split a string so I can access item x?
这是一个非常重要的问题,如果可能的话,在数据到达SQL之前可能更容易解决。