2016-07-18 4 views
0

Мне нужна инструкция SQL для возврата всех строк, содержащих текст, введенный в поле поиска, а не только те, которые соответствуют введенному тексту.SQL select statement для возврата строк, содержащих строку, не равную строке

SELECT * from table WHERE name='" + this.SearchBoxTxt.Text + "' 

это возвращает только точные совпадения Я читал, что вы предполагается использовать%, чтобы получить строки, содержащие строку

но

SELECT * from table WHERE name='%" + this.SearchBoxTxt.Text + "%' 

возвращает только строки, содержащие сами% символов (например, поиск «теста» приведет к возврату «% test%» в результате)

и

SELECT * from table WHERE name=%'" + this.SearchBoxTxt.Text + "'% 
SELECT * from table WHERE name='"% + this.SearchBoxTxt.Text + %"' 
SELECT * from table WHERE name='" +% this.SearchBoxTxt.Text %+ "' 

Не запускайте вообще.

Что мне не хватает?

+2

Представьте, что плохой парень печатает это в вашем текстовом поле: ''; DROP TABLE mytable; - 'Не пытайтесь, просто представьте, что кто-то это делает. Если это привлечет ваше внимание, прочитайте об атаках SQL-инъекций. – dasblinkenlight

+0

Что касается вашего фактического вопроса, используйте 'LIKE вместо' = '. – dasblinkenlight

+0

ничего себе было так просто. Благодарю. – Martynas

ответ

2

Пожалуйста, используйте LIKE вместо = operator. Попробуйте что-то ниже:

SELECT * from table WHERE name LIKE '%test%' 

Вы должны конкатенировать струны, которые дают что-то вроде выше.

Надеюсь, это поможет!

+0

Несмотря на то, что вы правильно используете оператор LIKE и соответствующий дикий символ, вы совершенно не согласны с конкатенацией строк. Это никогда не должно быть сделано, вместо этого вы должны рекомендовать использовать параметры. – Steve

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

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