2011-08-02 44 views
3

基本上我有一個字符串傳遞給一個變量..說打破在SQL參數和做搜索

@MyParameter =  "Flower Beer Dog" 

,所以我想要做的是找到所有包含「花」的記載,「啤酒」或‘狗’

Somehing一樣,如果我說

select * from myTable where myColumn = 'Flower' or myColumn = 'Beer' or myColumn = 'Dog' 

但事情是,我得到它在@MyParameter,我不知道如何分割它,並把它轉換成查詢以上

回答

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, @[email protected]) 

     SET @[email protected]+1 
     SET @end = @end+1 
    END 

RETURN 
END 

然後你使用這樣的:

SELECT * 
FROM table 
WHERE searchfield In (Select ParsedString From dbo.ParseStringList(@StringArray)) 
0

你可能想看看下面關於SQL中字符串拆分的文章。從那裏,你可以使用返回值來檢查表:

How do I split a string so I can access item x?

這是一個可以或許如果在所有可能的數據達到SQL之前更容易解決的不平凡的問題。

1

你可以使用LIKE做這樣的事情 - Parameterize an SQL IN clause

- 從這個問題採取

select * from myTable 
where '|' + REPLACE(@MyParameter,' ','|') + '|' 
like '%|' + myColumn + '|%' 

技術