|
Письмо в компьютерный сервисный центр: -
Этанутипауменяпробелполомалсячеделатьто? Ответ: -
Настоящие_программисты_не_пользуются_пробелами.
|
Выполнение SQL с пробелами и специальными символами в имени
поля/колонки
Выполнение SQL-запросов в Delphi-компоненте TQuery (или
специального средства SQL-запроса в Database Desktop, Visual dBASE
или Paradox for Windows) требует специального синтаксиса для любых
колонок, содержащих пробелы или специальные символы.
Пользуясь таблицей Biolife.DB из демо-данных Delphi,
проиллюстрируем использование любых специфических требований
синтаксиса. Запрос SQL Select мог бы быть сформирован следующим
образом: SELECT
Species No,
Category,
Common_Name,
Species Name,
Length (cm),
Length_In,
Notes,
Graphic
FROM
BIOLIFE В нормальной ситуации пробелы в номерах и именах
колонок, длина в сантиметрах, круглые скобки и другие символы могут
стать причиной синтаксической ошибки.
Для коррекции синтаксиса в вышеприведенном SQL-выражении
необходимо внести два изменения. Во-первых, любые колонки,
содержищие пробелы или специальные символы должны быть заключены в
двойные или одинарные (апострофы) кавычки. Во-вторых, ссылке на имя
колонки должна предшествовать ссылка на саму таблицу и точка после
нее. Второе требование особенно важно, поскольку заключенная в
кавычки строка интерпретируется не как строковое выражение, а как
значение колонки. Ниже приведено правильно отформатированное
выражение: SELECT
BIOLIFE."Species No",
BIOLIFE."Category",
BIOLIFE."Common_Name",
BIOLIFE."Species Name",
BIOLIFE."Length (cm)",
BIOLIFE."Length_In",
BIOLIFE."Notes",
BIOLIFE."Graphic"
FROM
"BIOLIFE.DB" BIOLIFE В приведенном выше примере таблицный
псевдоним BIOLIFE используется в качестве ссылки на саму таблицу и
располагается перед именем колонки . Данная ссылка может принимать
форму имени псевдонима, реального имени таблицы, или ссылаться на
имя файла при использовании таблиц dBASE или Paradox. Следующее
SQL-выражение должно также хорошо работать.
Примечание: Данное SQL-выражение может использоваться при
условии, что необходимый псевдоним уже открыт. В случае TQuery это
означает, что псевдоним определен в свойстве DatabaseName. SELECT
BIOLIFE."Species No",
BIOLIFE.Category,
BIOLIFE.Common_Name,
BIOLIFE."Species Name",
BIOLIFE."Length (cm)",
BIOLIFE.Length_In,
BIOLIFE.Notes,
BIOLIFE.Graphic
FROM
BIOLIFE Если псевдоним недоступен, то для таблицы должен
быть определен путь целиком, например, так: SELECT
"C:\DELPHI\DEMOS\DATA\BIOLIFE.DB"."Species No",
"C:\DELPHI\DEMOS\DATA\BIOLIFE.DB"."Category",
"C:\DELPHI\DEMOS\DATA\BIOLIFE.DB"."Common_Name",
"C:\DELPHI\DEMOS\DATA\BIOLIFE.DB"."Species Name",
"C:\DELPHI\DEMOS\DATA\BIOLIFE.DB"."Length (cm)",
"C:\DELPHI\DEMOS\DATA\BIOLIFE.DB"."Length_In",
"C:\DELPHI\DEMOS\DATA\BIOLIFE.DB"."Notes",
"C:\DELPHI\DEMOS\DATA\BIOLIFE.DB"."Graphic"
FROM
"C:\DELPHI\DEMOS\DATA\BIOLIFE.DB"
Наконец, есть два средства автоматического форматирования
специального синтаксиса. Первым является Visual Query Builder,
включаемой в версию Client/Server Delphi. Visual Query Builder
выполняет такое форматирование автоматически, по мере создания
запроса. Другое средство - Database Desktop Show SQL, доступный при
создании и редактировании запроса QBE-типа. После выбора пункта меню
Query|Show SQL, отображаемый SQL-текст может быть вырезан и вставлен
где необходимо. |