Одинарные кавычки в SQL запросе на Delphi или RAD Studio
Тот, кто впервые пытается реализовать SQL запрос к базе данных из программы на Delphi или RAD Studio, сталкивается со сложностями, даже если синтаксис SQL запросов ему давно знаком. Очень часто первым затруднением бывает проставление одинарных кавычек в запросе.
Дело в том, что все значения текстовых полей в SQL должны быть обрамлены в одинарные кавычки. Но и сам запрос представляет из себя строку, а строки в Delphi так же обрамляются в кавычки.
Рассмотрим пример:
Query.SQL.Text := 'SELECT * FROM Users WHERE (First_Name=Андрей) AND (Age<27)';
В таком виде выборка не будет осуществлена, возникнет ошибка — «Синтаксис SQL запроса неверен. Проблема в отсутствии одинарных кавычек у значения текстового поля First_Name». Есть несколько решений данной проблемы:
-
Использовать функцию QuotedStr(const S:string):string;
Функция добавляет символ одиночной кавычки в начало и конец строки. Пример использования:Query.SQL.Text := 'SELECT * FROM Users WHERE (First_Name='+QuotedStr('Андрей')+') AND (Age<27)';
-
Использовать два раза повторяющийся символ одиночной кавычки.
Query.SQL.Text := 'SELECT * FROM Users WHERE (First_Name=''Андрей'') AND (Age<27)';
-
Использовать код символа кавычки — #39. Пример использования:
Query.SQL.Text := 'SELECT * FROM Users WHERE (First_Name='+#39+'Андрей'+#39+') AND (Age<27)';