Я использую Dynamic SQL для создания оператора SELECT SQL, который будет выполнен. В выражении SQL, которое я создаю, я хочу использовать оператор «LIKE», но поскольку он использует инвертированные запятые », он конфликтует с инвертированными запятыми, используемыми в начале инструкции SELECT.Добавление оператора LIKE в предложение WHERE (динамический SQL)
SET @sql = 'SELECT * FROM LogTable WHERE Application LIKE ' + @ApplicationName + ' ;'
Предполагая, что '@ApplicationName = TestApp', вышеупомянутый динамический SQL '@sql' переменная будет производить следующую инструкцию SQL:
SELECT * FROM LogTable WHERE Application LIKE TestApp ;
Это вызвало бы ошибку, поскольку Кавычки не существуют вокруг «TestApp». Как можно создать инвертированные запятые в динамическом SQL, позволяющем использовать оператор LIKE? Как можно создать следующую инструкцию SQL:
SELECT * FROM LogTable WHERE Application LIKE 'TestApp' ;
Даже если вы получите эту работу, остерегайтесь Маленьких таблиц Бобби. Если он когда-либо ищет '% TestApp% '; DROP TABLE LogTable; SELECT «Вы были просто SQL Inject Attacked», тогда вы можете получить «неожиданные результаты»! Для любви ко всем вещам, пожалуйста, не используйте эту структуру, используйте Parameterized Queries * (Подготовленные утверждения AKA) *. – MatBailie
Почему вы используете поиск без подстановочных знаков? также, если это что-то простое, почему бы даже использовать динамический SQL в первую очередь? –
Я намерен реализовать приложение MVC, где должен быть раскрывающийся список с заранее определенными значениями. При выборе этих значений следует изменить имя @ApplicationName. Я намеревался использовать «LIKE», так что, когда выбрано пустое поле, он заменяет поисковый запрос «LIKE» оператором «%», чтобы привести все. – Dev