Определяет, как представляются данные типа VarChar в результатах выполнения SQL-запросов.

SET VARCHARMAPPING ON | OFF

Параметры

ON

Символьные данные представляются в соответствие со схемой  Тип полей Varchar .
OFF

(По-умолчанию) Символьные данные преобразуются в результатах запросов в обычном виде.

Комментарии

Данная команда SET VARCHARMAPPING определяет, как представлены символьные данные в результатах SQL-запросов при использовании  Команды SELECT - SQL и/или e Дизайнеров Query и View .

В тех случаях, когда Вам необходимо иметь результате символьные данные фиксированной длины, то устанавливайте SET VARCHARMAPPING в OFF, тогда данные символьного типа преобразуются в соответствующий фиксированный формат.

В представленных ниже примерах символьные выражения преобразуются соответствующим образом при использовании команды SET VARCHARMAPPING  OFF. Заметим , что это обеспечивает "обратную" совместимость с версией Visual FoxPro 8.0, и другими младшими версиями.

  Копировать Код
SELECT * FROM customers
*** -или-
SELECT companyname, contactname FROM customers

В следующем примере показано, что присутствие символьных выражений данных означает, что установка результата запроса будет содержать символьные данные переменной длины. Для это Вам необходимо использовать переменную типа Varchar. Значит нужно использовать команду SET VARCHARMAPPING ON.

  Копировать Код
SELECT ALLTRIM(companyname), ALLTRIM(contactname) FROM customers

Команда SET VARCHARMAPPING устанавливает преобразование данных, используя соответствующие  функции PADL( ) | PADR( ) | PADC( )  , в которых второй параметр не является константой..

  Копировать Код
SELECT LEN(PADR(field1,field2)) FROM customers INTO CURSOR tmpcusts

Команда SET VARCHARMAPPING действуеь только в текущем сеансе работы VFP. Данная команда поддерживается и в интерактивном режиме и в режиме выполнения RunTime. Она может также содержаться в установочном файле Config.fpw. См. дополнительно  Специальные установки в Конфигурационном файле  .

Если Вы используете вычисляемые поля, которые могут быть указаны в  команде SET FIELDS, настройка VARCHARMAPPING повлияет, как эти поля будут обрабатываться. Если вычисляемое символьное поле будет оцениваться как символьная строка переменной длины, это означает , что выполняется установка  SET VARCHARMAPPING ON. Это может повлиять в дальнейшем на использование, например 
 команды COPY TO .

  Копировать Код
SET VARCHARMAPPING ON
SET SAFETY OFF
CLOSE DATABASES ALL
USE HOME(2) + 'Northwind\Customers'
SET FIELDS GLOBAL
SET FIELDS TO cField = ALLTRIM(CompanyName)
COPY TO crsTemp
SET FIELDS LOCAL
SET FIELDS OFF
SET FIELDS TO
SELECT 0
USE crsTemp
LIST STRUCTURE

См. также