2015-01-23 3 views
0

У меня есть хранимая процедура, где в качестве входных данных 1 переменная.Как правильно использовать шаблоны в хранимых процедурах

CREATE PROCEDURE spExample 
@name NVARCHAR(60) = '' 
AS 
BEGIN 
    SELECT [name], [dom] 
    FROM [DomName] 
    INNER JOIN [Domain] 
      ON LEFT([name], 1)+'%' LIKE @name +'%' 
END 

На данный момент он возвращает записи из таблицы, если первая буква записи является входом. Например, если запись в таблице - «Тест», выведите следующую процедуру: EXEC spExample 'T' Возвращает правильную запись.

Но он должен возвращать запись даже если я напечатаю T, Te, Tes, или Test как ввод процедур. Есть идеи?

+1

Пробовали ли вы 'ON [имя] LIKE @name + '%' '? Вам не нужно добавлять знак процента в левый оператор, только правый. Кроме того, почему вы здесь? –

+0

Зачем использовать 'left' –

+1

Вы используете LEFT ([имя], 1), поэтому вы всегда будете проверять возвращенное первое письмо. Почему бы вам не попробовать LEFT ([name], Len (@name)), хотя это не идеально –

ответ

0

Попробуйте:

Select column1,column2 from Table1 where column1 like '''+'%'+ @var +'%'+''' 
0

Я не знаю, почему вы пытаетесь соединить две таблицы с помощью переменной.

SELECT [name], [dom] 
FROM [DomName] 
    INNER JOIN [Domain] ON [name] LIKE +'%' + @var +'%' 

Я считаю, что это должно пойти к где условие

SELECT [name], [dom] 
FROM [DomName] 
    INNER JOIN [Domain] ON [[[Some condition here based on two table relationship]]] 
Where [name] LIKE +'%' + @var +'%' 
Смежные вопросы