
Varbinary 是一个真正新的数据类型:它包含二进制值。象 Varchar 一样,Varbinary 字段没有被加上空格直到达到字段的最大长度。Microsoft 处于跟 Varchar 同样的理由为 VFP 增加了 Varbinary:更好的支持其它数据库。不过,它们也可以在 VFP 本地表中用于象时间戳、或者 GUID 这样的二进制值。Varbinary 的单字符缩写是“Q”。
被储存在 Varbinary 字段中的值使用一个新的记号:0h(一个零后面跟着字母“h”),后面跟着一系列的十六进制值。这个值不需要用引号括起来。这里是从 TestVarbinary.PRG 中拿来的一个示例,它演示了 Varbinary 的用法:
create cursor Test (Field1 Q(20))
insert into Test values (0h466F7820526F636B73)
&& 字符串 "Fox Rocks" 的二进制表示
? vartype(Field1) && 显示 "Q"
? len(Field1) && 显示 9
? Field1 && 显示 0h466F7820526F636B73
这里是关于 Varbinary 的一些细节:
? "It's true that " + Field1 && 显示 "It's true that Fox Rocks"
? Field1 + " tonight" && 显示 0h466F7820526F636B7320746F6E69676874
你可以使用这个行为特性来在字符和Varbinary之间进行转换。下面代码中的第一行将Varbinary转换成字符,而第二行则将字符转换成Varbinary:
? '' + 0h466F7820526F636B73 && 显示 "Fox Rocks"
? substr(0h00 + "Fox Rocks", 2) && 显示 0h466F7820526F636B73
当然,你也可以使用在本书第14章“语言的增强”中讨论的新 CAST() 函数来在 Character 和 Varbinary 之间进行转换。
? Field1 = 'Fox Rocks' && 显示 .T.
? Field1 + 0h00 = 'Fox Rocks' && 显示 .T.
? Field1 = 'Fox Rocks ' && 显示 .F.
? 'Fox Rocks' = Field1 && 显示 .T.
? 'Fox Rocks ' = Field1 && 显示 .T.
? 'Fox Rocks' = Field1 + 0h00 && 显示 .F.