Есть таблица из 3 полей: ID, Title, Data.
Необходимо сделать поиск по части значения в поле Title, если часть значения передаётся в виде параметра.
Пишу следующую операцию SELECT:
SELECT id, Title, Data
FROM Test
WHERE (Title LIKE '%@param%')
Возвращает NULL строку.
Пытаюсь схитрить и сделать что-то вроде:
SELECT id, Title, Data
FROM Test
WHERE (Title LIKE '%'Х@paramХ'%')
где вместо Х ставил "+", "." и т.д. чтобы сконкатинировать результат — естественно не работает.
Как сконкатинировать правильно? и получить следующее:
таблица:
0. hart NULL
1. TEST testing
2. esT esting
3. mes mesting
4. gsdfg fas
по параметру es — получить
1. TEST testing
2. esT esting
3. mes mesting
Здравствуйте, Аноним, Вы писали:
А>Как сконкатинировать правильно? и получить следующее:
SELECT * FROM Test WHERE Title LIKE ('%' + @param + '%')
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, Аноним, Вы писали:
А>>Как сконкатинировать правильно? и получить следующее:
L>L>SELECT * FROM Test WHERE Title LIKE ('%' + @param + '%')
L>
Звиздец. Всё перепробовал — не работало.
Так — работает
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Lloyd, Вы писали:
L>>Здравствуйте, Аноним, Вы писали:
А>>>Как сконкатинировать правильно? и получить следующее:
L>>L>>SELECT * FROM Test WHERE Title LIKE ('%' + @param + '%')
L>>
А>... Всё перепробовал — не работало.
А>Так — работает
так тоже только до поры будет — пока в @param спец символов не встретится: %[]_
вот так лучше:
SELECT * FROM Test WHERE Title LIKE ('%'+
REPLACE( REPLACE( REPLACE(@param,'[','[[]'), '_', '[_]' ), '%', '[%]' )
+'%')
но и это не все

— в @param еще может быть NULL, и только вам знать как его интерпретировать