Для того чтобы ввести в поле буквенно-числовой текст без добавления завершающих пробелов, используйте тип поля Varchar. Буквенно-числовой текст может содержать буквы, числа, пробелы, дополнительные символы и знаки пунктуации. Тип Varchar также обеспечивает удобный перенос типов данных VarChar из среды SQL Server в типы данных среды Visual FoxPro.
Для того чтобы предотвратить автоматическую трансляцию кодовых страниц в данных, хранящихся в полях типа Varchar, используйте тип поля Varchar (Binary).
Типы полей Varchar и Varchar (Binary) подобны полям типа Character и Character (Binary) в том смысле, что они применяются для хранения текстовой информации, которая не используется в математических вычислениях, таких как названия, адреса и номера. При сохранении значений полей типа Varchar и Varchar (Binary) в переменных памяти они рассматриваются как данные типа Character.
К сведению |
---|
Для того чтобы создать в таблице поле типа Varchar (Binary) используйте опцию NOCPTRANS в командах SQL CREATE TABLE и CREATE CURSOR или выберите его на закладке Fields в дизайнере таблицы.
|
Типы полей Varchar и Varchar (Binary) имеют приоритет перед типом Character при выполнении операций UNION и операций сложения между этими типами данных. Например, предположим, что Вы имеете поля типа Varchar (X) и Character (Y), где X представляет длину символьных данных, хранящихся в поле Varchar, а Y представляет длину поля Character. При выполнении операции сложения результирующее поле будет иметь тип Varchar и длину символьного значения X+Y.
Когда выполняются операции сложения между Varchar (Binary) (X) и Character (Binary) (Y), результатом является Varchar (Binary) (X+Y). Для функций Visual FoxPro, которые возвращают значение типа Character, если хотя бы один параметр - это поле таблицы или курсора с типом Varchar или Varchar (Binary), то возвращаемое значение будет иметь тип Varchar. Для получения дополнительной информации о преобразовании типов данных и приоритетах в операции UNION, смотрите Общие Рекомендации по использованию операторов SQL SELECT.
Индексные ключи, основанные на полях типа Varchar и Varchar (Binary) или выражениях с их использованием, автоматически дополняются концевыми пробелами справа до значения максимальной длины этих полей. Поэтому, опция LIKE в условиях объединения JOIN или фильтрах WHERE в SQL командах с использованием полей типа Varchar или Varchar (Binary) может иметь только уровень Rushmore-оптимизации "partial" (частичная). Для получения дополнительной информации смотрите Использование оптимизации запросов Rushmore для ускорения доступа к данным.
Поддержка для типов Varchar и Varchar (Binary)
Типы полей Varchar и Varchar (Binary) поддерживаются для контейнеров базы данных (.dbc), свободных таблиц, курсоров, локальных и удаленных представлений. Например, Вы можете выбрать эти типы для полей на закладке Fields в дизайнере таблицы. Таблицы могут иметь несколько полей типа Varchar и Varchar (Binary). Вы можете указать значения по умолчанию и значения null для полей типа Varchar и Varchar (Binary). Varchar и Varchar (Binary) поля поддерживают контроль полей (RULE).
В следующей таблице приведен список языковых конструкций, которые содержат функциональность, учитывающую поля типа Varchar и Varchar (Binary).
Для получения более детальной информации о типах Varchar и Varchar (Binary) смотрите Типы данных и полей Visual FoxPro.
Приведенный ниже пример последовательно выполняет следующие операции. Команда CLEAR очищает главное окно Visual FoxPro. SQL-команда CREATE CURSOR создает курсор с именем myCursor, содержащий два поля. Одно поле имеет имя myVarCharField и тип Varchar, другое - имя myCharField и тип Character. При помощи последовательных SQL-команд INSERT осуществляется наполнение этого курсора данными. Причем каждая последующая SQL-команда INSERT вставляет символьную строку, содержащую на один символ больше, чем предыдущая строка. Команда BROWSE отображает курсор. В этот момент выполнение примера приостанавливается до того момента, как Вы закроете окно BROWSE, например, при помощи клавиши Esc. После закрытия окна BROWSE выполняется команда GO TOP, которая переводит указатель записи на первую запись курсора. Затем выполняется цикл SCAN, который последовательно перебирает все записи курсора сверху вниз. На каждом шаге цикла отображается количество символов в обоих полях при помощи функции LEN( ).
Вы можете скопировать пример в программный файл (.prg) и запустить его из окна Command при помощи DO команды.
| Скопировать код |
---|
CLEAR
CREATE CURSOR myCursor (myVarCharField V(10), myCharField C(10))
INSERT INTO myCursor (myVarCharField, myCharField) VALUES ("a", "a")
INSERT INTO myCursor (myVarCharField, myCharField) VALUES ("aa", "aa")
INSERT INTO myCursor (myVarCharField, myCharField) VALUES ("aaa", "aaa")
INSERT INTO myCursor (myVarCharField, myCharField) VALUES ("aaaa", "aaaa")
BROWSE
GO TOP
SCAN
? "# VarChar символов: ", LEN(myVarCharField), ;
", # Char символов: ", LEN(myCharField)
?
ENDSCAN |
Для получения дополнительной информации об использованных в данном примере командах и функциях смотрите CLEAR команда, CREATE CURSOR - SQL команда, INSERT - SQL команда, BROWSE команда, GOTO команда, SCAN ... ENDSCAN команда, DO WHILE ... ENDDO команда, EOF( ) функция, и SKIP команда.
Смотрите также