С# построение запроса параметра SQL - LIKE%
Я пытаюсь построить SQL для запроса параметра в С# для запроса, который будет содержать команду LIKE %%
.
Вот что я пытаюсь выполнить (обратите внимание, что база данных - это Firebird)
var SQL = string.format("SELECT * FROM {0} WHERE {1} LIKE '%?%'", TABLE, NAME);
cmd.Parameters.AddWithValue(NAME, "JOHN");
Теперь я пробовал каждую перестановку, чтобы заставить параметр работать, я пробовал;
-
Добавление символа %
к параметру
cmd.Parameters.AddWithValue(NAME, "%" + "JOHN" + "%");
-
или
cmd.Parameters.AddWithValue(NAME, "'%" + "JOHN" + "%'");
Я не могу заставить это работать, как я могу использовать параметр для запроса LIKE.
Предложения приветствуются!
Ответы
Ответ 1
У вас не может быть параметров внутри строкового литерала в запросе. Сделайте все значение параметра и добавьте подстановочные знаки в строку:
var SQL = string.format("SELECT * FROM {0} WHERE {1} LIKE ?", TABLE, NAME);
Cmd.Parameters.AddWithValue(NAME, "%" + "JOHN" + "%");
Ответ 2
var SQL = string.Format("SELECT * FROM {0} WHERE {1} LIKE '%' + ? + '%'", TABLE, NAME);
Cmd.CommandText = SQL;
Cmd.Parameters.Add("?", SqlDbType.VarChar, 50).Value = "JOHN";
Ответ 3
В прошлом, когда я делал это, я просто интегрировал его в sql, убедившись, что я заменяю одинарные кавычки вопросительными знаками для обработки SQL-инъекций. Например:
var SQL = string.format("SELECT * FROM {0} WHERE {1} LIKE '%{2}%'",
TABLE,
NAME,
JOHN.Replace("'","?"));