Проблема с запросами MySQL с «лайками» и путаницей - PullRequest
1 голос
/ 08 февраля 2011

Мне нужно использовать строковый запрос, чтобы выполнить поиск в БД для программы на C #, которая взаимодействует с сервером MySQL.То, что я хочу найти, это имя, которое «похоже» на одну из моих переменных (nameVar)

У меня есть следующий запрос в программе на C #

string q = "SELECT * 
              FROM TABLE 
             WHERE name is like %?nameVar%";

Как только выполнитьзапрос в моей программе, я получаю синтаксическую ошибку, сообщающую, что синтаксис рядом с «как» является неправильным.Как только я удаляю знак "%", он работает нормально.

Я запутался, обязательно ли удалять знак% при построении строки запроса?

Ответы [ 5 ]

1 голос
/ 08 февраля 2011

Ваш параметр заменяет часть ?nameVar, включая кавычки. Если параметр "TEST", ваш запрос будет представлен как

string q = "SELECT * 
              FROM TABLE 
             WHERE name is like %'TEST'%";

Как видите, знаки% неуместны. либо включите их из программы на C # в namevar, либо измените запрос на

string q = "SELECT * 
              FROM TABLE 
             WHERE name is like '%' + ?nameVar + '%'";
0 голосов
/ 08 февраля 2011

Я думаю, правильный синтаксис:

SELECT * FROM table WHERE fields LIKE '%phrase%'
0 голосов
/ 08 февраля 2011

Строки в SQL необходимо заключать в одинарные кавычки:

string q = "SELECT * 
              FROM TABLE 
             WHERE name LIKE '%?nameVar%' ";

Кроме того, при использовании LIKE.

нет оператора IS.
0 голосов
/ 08 февраля 2011

Я думаю, что вы должны оставить "есть".

MySQL Pattern Matching

0 голосов
/ 08 февраля 2011

вам нужно процитировать запрос:

string q = "SELECT * from table where name is like '%?nameVar%'";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...