MS SQL 2005
От: Аноним  
Дата: 02.10.07 12:13
Оценка:
Есть таблица из 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
Re: MS SQL 2005
От: Lloyd Россия  
Дата: 02.10.07 12:29
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Как сконкатинировать правильно? и получить следующее:


SELECT * FROM Test WHERE Title LIKE ('%' + @param + '%')
Re[2]: MS SQL 2005
От: Аноним  
Дата: 02.10.07 13:15
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, Аноним, Вы писали:


А>>Как сконкатинировать правильно? и получить следующее:


L>
L>SELECT * FROM Test WHERE Title LIKE ('%' + @param + '%')
L>



Звиздец. Всё перепробовал — не работало.
Так — работает
Re[3]: MS SQL 2005
От: ilya.buchkin США http://engineering.meta-comm.com/
Дата: 10.10.07 23:14
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, 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, и только вам знать как его интерпретировать
--
Ilya Buchkin
MetaCommunications Engineering, Iowa City — Санкт-Петербург
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.