Столбец поиска SQL для каждой переменной в строке CSV - PullRequest
0 голосов
/ 01 июля 2010

У меня есть переменная, переданная в хранимую процедуру. Пример:

@keywords = 'val1, val3, val5'

И я пытаюсь увидеть, содержит ли какой-либо из них столбец с именем Title

Ex: Title1 - 'Hello val1'
    Title2 - 'Hello val3'   
    Title3 - 'Hello val1, val3'  
    Title4 - 'Hello' 

ТАК мойрезультаты должны возвращать значения

Title
------
Hello val1
Hello val3
Hello val1, val3

Можно ли использовать LIKE или любую другую функцию / метод?

Ответы [ 2 ]

4 голосов
/ 01 июля 2010

Вам нужно разбить CSV на строки (см. Массивы и списки в SQL Server 2005 и более поздних версиях для различных методов).Я предполагаю, что вы создаете dbo.ufnSplitRows на основе этого

. Затем СОЕДИНЯЙТЕСЬ, используя LIKE

SELECT *
FROM
    MYtable M
    JOIN
    dbo.ufnSplitRows (@CSV) C ON M.Title LIKE '%' + C.SplitValue + '%'

Кстати, он будет работать плохо из-за, по крайней мере, лидирующего '%'1009 *

2 голосов
/ 01 июля 2010

Если вы сделаете некоторые предположения о том, как хранится строка запроса, то да (хотя это не очень эффективно):

Предположение: строка будет храниться с каждым элементом, разделенным запятой, а затем пробел,(Это то, что вы разместили в своем вопросе)

select * from YourTable where 
    (@keywords like KeyColumn + ', %') or
    (@keywords like '%, ' + KeyColumn + ', %') or
    (@keywords like '%, ' + KeyColumn)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...