2010-11-25 1 views
0

Я хочу использовать LIKE в sp_executesql, но я не могу построить заявление, я получаю ошибки, это простой пример, чтобы показать случай:Как использовать LIKE в sp_executesql? Я не могу построить заявление

SELECT @SqlStatement = @SqlStatement +  
    (CASE @SearchType 
    WHEN 'L' THEN 
     + N' AND aa.Location = COALESCE(@SearchCriteria, '''') ' 
    WHEN 'M' THEN 
+ N' AND aa.ManufactureName LIKE COALESCE(@SearchCriteria, '''') ' 
    WHEN 'P' THEN 
     + N' AND OH.PONumber = COALESCE(@SearchCriteria, '''')' 
    END) 
+1

какие ошибки вы получать .. – 2010-11-25 12:35:08

ответ

1

Думай около написать процедура не запрос.

1

удалить знак плюс после ТО

WHEN 'x' THEN N'some X' 

конкатенация выполняется знаком плюс в первой строке, а выражение СЛУЧАЙ только удерживает второй операнд.

0

Как сказал devio, лету нужно удалить знак плюса после пункта THEN. Кроме того, если @SearchCriteria - это параметр, который вы получаете как @SearchType, тогда вам также необходимо объединить его значение и не использовать его внутри создаваемого вами оператора. Ваш запрос должен быть чем-то вроде этого:

SELECT @SqlStatement = @SqlStatement +  
    (CASE @SearchType 
    WHEN 'L' THEN 
     N' AND aa.Location = COALESCE('''[email protected]+''', '''') ' 
    WHEN 'M' THEN 
    N' AND aa.ManufactureName LIKE COALESCE(''%'[email protected]+'%'', '''') ' 
    WHEN 'P' THEN 
     N' AND OH.PONumber = COALESCE('''[email protected]+''', '''')' 
    END) 
0
WHERE 
(
    (@SearchType = 'L' 
     AND aa.Location = @SearchCriteria) 
    OR (@SearchType = 'M' 
     AND aa.ManufactureName LIKE REPLACE(@SearchCriteria, '%', '[%]') + '%') 
    OR (@SearchType = 'P' 
     AND OH.PONumber = @SearchCriteria) 
) 

 Смежные вопросы

  • Нет связанных вопросов^_^