Тип данных VARBINARY в Visual FoxPro
« Назад Хранит символьные данные в виде двоичных литералов без нулевых байтов, дополняющих значение до длины поля. Длина поля в случае типа Varbinary фиксирована. Если есть необходимость хранить двоичные данные переменной длины, то используется тип Blob. Двоичным литералам предшествует префикс 0h. Далее следуют шестнадцатеричные величины, например: 0h202020, 0h6ABCDEF или 0h (пустой двоичный литерал). Переменная получит тип Varbinary, если ей присвоить значение двоичного литерала, например: someVarbinary = 0h616263 && Строка "abc" ? VarType(someVarbinary) && Напечатает: Q ? Cast(someVarbinary as C(Len(someVarbinary))) && Напечатает: abc ? "" + someVarbinary && Напечатает: abc С данными типа Varbinary (Q) употребляются операции отношения и конкатенации. При этом в выражении могут присутствовать также и данные типов Varchar (V) и Character (C). Тип результата операции конкатенации определяется типом первого операнда, например: V + Q = V Q + V = Q C + V = Q В операциях отношения с типами Varbinary, Varchar и Character управляет операцией левый операнд, например, сравнение Q = V VFP выполняет по байтам, преобразовывая тип Varchar в тип Varbinary, то есть выполняя сравнение Cast(V as Q(n)) = Q && n = Len(Q) При сравнении V = Q VFP оценивает величины как символьные строки, что равносильно сравнению Cast(Q as V(n)) = V Индексные ключи, основанные на полях или выражениях типа Varbinary, содержат нулевые байты, дополняющие значение до длины ключа, например величины 0hAA, 0hAA00 и 0hAA000 имеют одно и то же значение индексного ключа – 0hAA0000. Для ключей, основанных на двоичных данных, применяется collate-последовательность MACHINE. Иная collate-последовательность недопустима. Тип Varbinary поддерживается для таблиц баз данных, свободных таблиц, курсоров и видов. Преобразование кодовой страницы не выполняется. С типом Varbinary употребляются символьные функции, кроме LIKE( ), LIKEC( ) и CTOBIN( ), и битовые функции, кроме BITLSHIFT( ) и BITRSHIFT( ). Кроме того, Varbinary не поддерживается и опцией LIKE команды SELECT – SQL. Пример. Таблица Text имеет поле Vbinfld типа Varbinary поле Charfld типа Character. Длина каждого поля 10 байтов. select Test replace Vbinfld with 'abc' ; Charfld with 'abc' ? Vbinfld && Напечатает: 0h616263 ? Charfld && Напечатает: abc ? Len(Vbinfld) && Напечатает: 3 ? Len(Charfld) && Напечатает: 10 ? At('b', Vbinfld) && Напечатает: 2 ? At(0h62, Vbinfld) && Напечатает: 2 Замечания: 1. Функции ALLTRIM( ), LTRIM( ), RTRIM( ) и TRIM( ) удаляют ведущие и хвостовые нулевые байты двоичной величины. 2. Величины типа Varbinary не совместимы с двоичными результатами, возвращаемыми функцией BINTOC( ) и принимаемыми функцией CTOBIN( ). |