1 Востаннє редагувалося Betterthanyou (02.04.2016 22:55:23)

Тема: T-SQL Function, LIKE не хоче шукати

Створив я таку функцію

CREATE FUNCTION fun1 (@name nvarchar(255))
RETURNS TABLE
AS
RETURN
(
    SELECT [_id_], [_name_], [_surname_], [_position_], [_phone_number_] 
    FROM [worker] 
    WHERE @name LIKE ('%'+[_name_]+'%') or @name LIKE ('%'+[_surname_]+'%') or @name LIKE ('%'+[_phone_number_]+'%') or @name = ('%'+[_position_]+'%')
);

І пробую шукати

SELECT * FROM fun1(N'Олександр');

Запис знайдений

А тепер віднімемо один символ

SELECT * FROM fun1(N'Олександ');

Нічого не знайдено

а msdn написано що "%" - Будь-який рядок довжиною від нуля і більше символів.

Так чому ж

@name LIKE ('%'+[_name_]+'%')

не хоче находити рядок ?

2

Re: T-SQL Function, LIKE не хоче шукати

@name LIKE ('%'+[_name_]+'%')

підставляємо ваші значення:
'Олександр'

'Олександр' LIKE ('%Олександр%')

знаходить
'Олександ'

'Олександ' LIKE ('%Олександр%')

не знаходить.
Все правильно, так і має бути. 'р' зайвий.

Подякували: Betterthanyou, leofun012

3 Востаннє редагувалося Betterthanyou (03.04.2016 00:03:15)

Re: T-SQL Function, LIKE не хоче шукати

Правильний варіант функції
CREATE FUNCTION fun1 (@name nvarchar(255))
RETURNS TABLE
AS
RETURN
(
    SELECT [_id_], [_name_], [_surname_], [_position_], [_phone_number_] 
    FROM [worker] 
    WHERE [_name_] LIKE ('%'+@name+'%') or [_surname_] LIKE ('%'+@name+'%') or  [_phone_number_] LIKE ('%'+@name+'%') or [_position_] LIKE ('%'+@name+'%')
);

Дякую за допомогу

Подякували: koala, leofun012