Правила ввода значений для поиска
Обновлен: Ноябрь 2007
В этом подразделе содержатся соглашения, которых следует придерживаться при вводе следующих типов значений литералов в условиях поиска:
Текстовые значения
Числовые значения
Даты
Логические значения
Примечание. |
---|
Информация в данном разделе основана на правилах стандартного SQL-92. Однако, каждая база данных может реализовывать SQL своим собственным способом. Поэтому правила, описанные здесь, могут быть применимы не во всех случаях. При возникновении вопросов по вводу значений поиска для конкретной базы данных обращайтесь к документации по используемой базе данных. |
Поиск по текстовым значениям
Следующие правила применяются при вводе в условие поиска текстовых значений:
Кавычки Заключайте текстовые значения в одинарные кавычки (например при указании фамилии):
'Smith'
При вводе условия поиска в области критериев можно просто ввести текстовое значение, и конструктор запросов и представлений автоматически заключит его в одинарные кавычки.
Примечание. В некоторых базах данных элементы в одинарных кавычках интерпретируются как значения литералов, тогда как элементы, заключенные в двойные кавычки, — как объекты базы данных (например имена столбцов и таблиц). Таким образом, даже если конструктор запросов и представлений воспримет элементы, заключенные в двойные кавычки, они могут быть интерпретированы не так, как ожидается.
Использование апострофов Если искомые данные содержат одинарную кавычку (апостроф), введите вместо него две одинарных кавычки, чтобы указать, что апостроф входит в значение литерала, а не завершает его. Например, при поиске значения "Swann's Way" введите:
='Swann''s Way'
Максимальный размер Не превышайте при вводе длинных строк максимальную длину инструкции SQL для базы данных.
Учет регистра символов Соблюдайте регистр символов, если используемая база данных его учитывает. Чувствительность поиска текста к регистру символов определяется базой данных. Например, некоторые базы данных трактуют оператор "=" как точное совпадение с учетом регистра символов, а другие допускают любые комбинации прописных и строчных букв.
Если нет уверенности в том, что поиск в базе данных учитывает регистр символов, пользуйтесь для преобразования регистра в условии поиска функциями UPPER и LOWER, как показано в следующем примере:
WHERE UPPER(lname) = 'SMITH'
Дополнительные сведения о функциях преобразования букв верхнего и нижнего регистров см. в разделах Функции для выражений.
Поиск по числовым значениям
При вводе в условие поиска числовых значений должны применяться следующие правила:
Кавычки Не заключайте числа в кавычки.
Нецифровые символы Не вводите нецифровые символы, за исключением десятичного разделителя (который определен в диалоговом окне Язык и региональные стандарты панели управления Windows) и знака минус (-). Не вводите разделители десятичных групп (пробел между тысячами) и символы обозначения валют.
Десятичный признак При вводе целых чисел можно указать признак десятичного числа, указывающий, производится ли поиск целого или действительного числа.
Экспоненциальное представление Очень большие или очень малые числовые значения могут быть введены в экспоненциальном представлении, как показано в следующем примере:
> 1.23456e-9
Поиск по датам
Формат ввода даты зависит от базы данных и от того, в какой области конструктора запросов и представлений вводятся данные.
Примечание. |
---|
Если формат даты, допустимый для источника данных, неизвестен, введите дату в столбце фильтра области критериев в каком-нибудь известном формате. Конструктор преобразовывает большинство таких значений в нужный формат. |
Конструктор запросов и представлений может работать со следующими форматами даты:
Определяется языковым стандартом Формат даты, указанный в диалоговом окне Свойства языка и стандартов Windows.
Определяется базой данных Любой формат, воспринимаемый базой данных.
По стандарту ANSI Формат, в котором используются фигурные скобки, маркер "d" для обозначения даты и дата в символьном виде, как в следующем примере:
{ d '1990-12-31' }
Дата и время по стандарту ANSI Аналогично дате по стандарту ANSI, но с указанием маркера "ts" вместо "d" и с добавлением к дате часов, минут и секунд (в 24-часовом формате), как в следующем примере (для 31 декабря 1990 года):
{ ts '1990-12-31 00:00:00' }
Вообще формат даты стандарта ANSI используется для баз данных, в которых для представления даты используется стандартный тип данных даты. В противоположность этому, формат datetime используется для баз данных, в которых поддерживается тип данных datetime.
В следующей таблице приведены все форматы даты, которые могут быть указаны в различных областях конструктора запросов и представлений.
Область |
Формат даты |
---|---|
Критерии |
Определяется языковым стандартом, базой данных, стандартом ANSI Дата, введенная в области критериев, в области "SQL" преобразуется в формат, совместимый с базой данных. |
SQL |
Определяется базой данных, стандартом ANSI |
Результаты |
Определяется языковым стандартом |
Поиск по логическим значениям
Форматы логических значений различаются для разных баз данных. Очень часто значение False хранится как нуль (0). Значение True обычно хранится как 1, и, иногда, как -1. При вводе в условие поиска логических значений должны применяться следующие правила:
Для поиска значения False указывайте нуль, как в следующем примере:
SELECT * FROM authors WHERE contract = 0
Если неизвестно, какое значение указывать для поиска True, попробуйте указать 1, как в следующем примере:
SELECT * FROM authors WHERE contract = 1
В качестве альтернативного решения можно ограничить область поиска указанием ненулевого значения, как в следующем примере:
SELECT * FROM authors WHERE contract <> 0