Распечатать страницу

Типы данных Varchar и Varchar (Binary) в VFP

« Назад

Поле типа данных Varchar содержит произвольный текст без пробелов, дополняющих его до длины поля. Так, если в полях Vcharfld и Charfld длиной 10 символов соответственно типов Varchar и Character поместить строку "abc", то LEN(Vcharfld) и LEN(Charfld) вернут соответственно 3 и 10. Тип Varchar также полезен для взаимодействия с данными типа Varchar SQL Server. Тип Varchar (Binary) отличается от Varchar отсутствием связи с кодовой страницей.

Переменная, получив значение типа Varchar или Varchar (Binary), будет иметь тип Character, например:

cVar = Test.Vcharfld          && Vcharfld – поле типа Varchar таблицы Test

? VarType(cVar)                 && Напечатает: C

Программно поле Varchar (Binary) создается командами CREATE TABLE и CREATE CURSOR, если использована опция NOCPTRANS.

Поля типа Varchar и Varchar (Binary) имеют приоритет над полями типа Character и Character (Binary) в опции UNION или при выполнении конкатенации. Так, если один операнд имеет тип Varchar, а другой – тип Character, то результирующее поле будет иметь тип Varchar.

Пример. Результирующее поле Newfld будет иметь тип Varchar. Длина результата будет равна сумме LEN(Vcharfld) + LEN(Charfld).

select Vcharfld + Charfld as Newfld from Test

То же справедливо и для символьных функций VFP, возвращающих символьный результат: поле будет иметь тип Varchar, если операнд имеет тип Varchar или Varchar (Binary), например результате запроса

select Substr(Vcharfld, 2) as Newfld from Test

поле Newfld будет иметь тип Varchar.

Индексные ключи, построенные на основе полей типа Varchar и Varchar (Binary) или выражений с полями таких типов, дополняются хвостовыми пробелами до длины наибольшего ключа. Поэтому SQL-опция LIKE с в условиях объединения или фильтрации только частично рашмор-оптимизируема.