以下是小编为大家准备的数字数据类型,本文共9篇,希望对大家有帮助。

篇1:数字数据类型
常用的:
1.优化循环,通过重新组织重复的子表达式来提高循环体的运行性能。
2减少使用对象的数量来提高运行性能。
3.缩减网络传输数据来缩短等待时间。
其他:
1.采用对象池技术,提高对象的利用效率。
性能的损耗主要源于创建和释放对象,因此要避免对象的创建和释放。采用对象池技术,预先定义一个对象池,预先创建一组待使用的对象:
Enemy[5] enemy=new Enemy[5];
for(int i=0;i<5;i++){
enemy[i]=new Enemy;
}
增加标志如used和reset标识Enemy的状态。需要创建对象时从对象池中获取 一个未被使用的对象并用reset方法初始化;需要释放时只需修改标志位以供下次使用即可,
2.尽可能使用基本数据类型代替对象
例如用二维数组代替一个写简单的对象。
3.优化算法
比如对于默写不要求很精细的场景和算法,用简单的算法模拟。
4.其他优化
a.如提取字符串时,试着返回子串而不是创建一个副本。
b.尽量的少创建短期的临时对象。
c.能用库函数的就不要自己创建(库函数是优化好的)
d.Map map=new HashMap();
HashMap map=new HashMap(); //这个性能更高,重构代码
e.增强型for循环和Iterable使用时,多了一个对象的创建,慎用。
f.避免enum类型。
g.嵌入式开发时注意浮点的运用,尽量不用。(处理器是否支持浮点)
h.图片资源压缩、多张图片集中到一张图片上(比单独的和小很多,省去了每张的头文件、结束文件等数据块,合并了调色板)
篇2:Javascript数据类型转换规则
前言
Javascript有7种数据类型,包括5种原始类型(也叫原始值)number、Boolean、string、null、undefined和2种复合类型object、array,它们之间可以根据某种规则相互转换,《Javascript权威指南》列出了在Javascript中如何进行类型转换,
其中原始值之间的转换没什么可说的,记住就好了,我们要关注的是复合值(即对象)与原始值之间的转换。原始值转换成对象直接调用Object方法即可(null和undefined不可调用该方法),而对象转换成原始值呢?如空数组[]转换成数字为什么是0呢?
对象转换成原始值
对象转换成布尔值:所有对象转换成布尔值都是true,包括包装对象new Boolean(false)转换成布尔值也是true。
对象转换成字符串:如果对象有toString()方法,则调用这个方法,如果它返回原始值,将原始值转换成字符串后返回;如果对象没有toString()方法或调用toString()方法方法返回的不是原始值,则调用valueOf()方法,然后将valueOf()方法返回的原始值转换成字符串返回,如果valueOf()方法返回的还不是原始值,没救了,浏览器只好抛出类型异常的错误。
对象转换成数字:和对象转换成字符串过程类似,只不过先调的是valueOf()方法。
根据以上规则就可以知道为什么空数组转换成数字结果是0了:空数组先调用了valueOf()方法,返回了“”字符串,“”字符串是个原始值,再根据上面的表格,“”字符串转换成数字0。
隐式类型转换
来看一个例子:
“123” == 123
大家都知道结果是true,==运算符两边的操作数属于不同的数据类型,要判断是否相等,需要经过隐式类型转换成相同的数据类型才行。然而,是运算符左边的“123”转换成了数字123还是运算符右边的123转换成了字符串“123”呢?
规则是:
如果一个值是null,另一个是undefined,那么它们相等
如果一个值是数字,另一个是字符串,先将字符串转为数字再比较
如果其中一个值是true,将true转为1再比较,同理false转换成0再比较
如果一个值是对象,另一个是数字或字符串,则将对象转换成原始值再进行比较(日期对象转换成字符串,其它对象先尝试调用valueOf()方法再尝试使用toString())
其它不同类型的比较都不相等
显然上面的例子属于第二种情况,“123”被隐式转换为123了。
除了==运算符,诸如+、-、*、/、!、<、<=、>、>=等运算符两边的操作数类型不同时,都会发生隐式类型转换,还包括while()语句和if()语句内的条件语句,alert()语句会将()内的值隐式转换成字符串后再弹出。
“+”运算符
二元加法运算符“+”可以对两个数字做加法,也可以做字符串连接操作:
1 + 1 // 2
“hello” + “world” // “hello world”
当二元加法运算符“+”遇到下面的运算时操作数会如何转换呢?试着想想答案再往下看
1 + true
“1” + true
1 + “1”
{} + 1
{} + {}
隐式转换规则:
如果其中一个操作数是对象,对象会转换成原始值:日期对象通过toString()方法转换,其他对象通过valueOf()方法转换,如果valueOf()返回值不是原始值再使用toString()方法转换,
在进行了对象到原始值的转换后,如果其中一个操作数是字符串的话,另一个操作数也会转换为字符串,然后进行字符串拼接。
否则,两个操作数都将转换为数字(转换不了的将转换为NaN),然后进行加法操作。
根据规则,以上的例子结果是:
1 + true // true转换为1,然后加法得出结果2
“1” + true // true转换为“true”,然后字符串拼接得出结果“1true”
1 + “1” // 数字1转换为“1”,然后字符串拼接得出结果“11”
{} + 1 // {}对象调用toString()方法转换为字符串“[object Object]”,变成了“[object Object]” + 1,匹配第二条规则,1将转换为字符串“1”,然后字符串拼接得出结果“[object Object]1”
{} + {} // 自己想想过程吧
当“+”做为一元运算符时,会把操作数转换为数字(转不了的转成NaN)
“-”运算符
当“-”做为二元运算符时,会把操作数转换为数字(转不了的转成NaN)
当“-”做为一元运算符时,会把操作数转换为数字(转不了的转成NaN),同时改变运算结果的符合
比较运算符(“>”、“>=”、“<”、“<=”)
比较操作符的操作数可能是任意类型,然而只有数字和字符串才能真正执行比较操作,因此其它类型的操作数都将进行类型转换,具体规则如下:
如果操作数为对象,那么这个对象将转换为原始值:同上,日期对象通过toString()方法转换,其他对象通过valueOf()方法转换,如果valueOf()返回值不是原始值再使用toString()方法转换。
在对象转换为原始值后,如果两个操作数都是字符串,将依次比较每个字符串的Unicode大小。
在对象转换为原始值后,如果至少有一个操作数不是字符串,那么两个操作数都将转换为数字进行比较,如果其中某个操作数无法转换为数字,这个操作数将转换为NaN,比较结果为false。
“*”、“/”、“%”、“!”
“*”、“/”、“%”会把操作数转换为数字(转不了的转成NaN)
“!”会把操作数转换为布尔值
篇3:Redis数据类型学习
Redis是一款开源,高性能键-值存储(key-value store).它的键值可以包括字符串(strings)类型,同时它还包括哈希(hashes),列表(lists),集合(sets)等数据类型.对于这些数据类型,可以执行原子操作.例如:对字符串进行附加操作(append);递增哈希中的值;向列表中增加元素;计算集合的交集,并集与差集等.
经常有人拿memcached和redis做比较.下面简单看下他们之间有哪些差别:
1.网络IO模型
memcached是多线程,非阻塞IO复用的网络模型.多线程模型可以发回多核作用,但有时也带来性能损耗.
redis使用单线程的IO复用模型.自己封装了一个简单的AeEvent事件处理框架,主要实现了epoll,kqueue和select,对于单纯只有IO操作来说,单线程可以将速度优势发挥到最大,但是一些操作,如排序,聚合等,单线程模型实际会严重影响整体吞吐量.
2.内存管理
memcached使用预分配的内存池的方式.能省去申请释放内存的开销,减小内存碎片产生,但这种方式也会带来一定程度上的空间浪费.数据也可能被剔除.
redis使用现场申请内存的方式来存储数据.优化内存分配,非临时数据永远不会被剔除,即便物理内存不够.这点redis更适合作为存储而不是cache
3.存储方式
memcached基本只支持简单的key-value存储,不支持枚举,不支持持久化和复制等功能.
redis除key/value之外,还支持list,set,sorted,hash等数据结构.同时还支持持久化和复制等功能.
如果希望数据不被剔除,或者需要key-value之外更多数据类型支持时,使用redis更适合.
下面安装Redis.
1.下载redis redis-2.4.14.tar.gz code.google.com/p/redis/downloads/list
01
root@10.1.1.45:~# ls -l redis-2.4.14.tar.gz
02
-rw-r--r-- 1 root root 627494 -05-08 16:16 redis-2.4.14.tar.gz
03
root@10.1.1.45:~# tar xf redis-2.4.14.tar.gz
04
root@10.1.1.45:~# cd redis-2.4.14/
05
root@10.1.1.45:redis-2.4.14# ll
06
total 84
07
-rw-rw-r-- 1 root root 12105 -05-23 17:32 00-RELEASENOTES
08
-rw-rw-r-- 1 root root 55 2012-05-23 17:32 BUGS
09
-rw-rw-r-- 1 root root 671 2012-05-23 17:32 CONTRIBUTING
10
-rw-rw-r-- 1 root root 1487 2012-05-23 17:32 COPYING
11
drwxrwxr-x 5 root root 4096 2012-05-23 17:32 deps
12
-rw-r--r-- 1 root root 25 2013-05-08 16:15 dump.rdb
13
-rw-rw-r-- 1 root root 30 2012-05-23 17:32 INSTALL
14
-rw-rw-r-- 1 root root 397 2012-05-23 17:32 Makefile
15
-rw-rw-r-- 1 root root 2813 2012-05-23 17:32 README
16
-rw-rw-r-- 1 root root 21094 2012-05-23 17:32 redis.conf
17
篇4:Lua数据类型介绍
这篇文章主要介绍了Lua数据类型介绍,本文讲解了Lua中的nil(空)、boolean(布尔)、number(数字)、string(字符串)、table(表)、function(函数)、thread(线程)、userdata(自定义类型)等数据类型,需要的朋友可以参考下
Lua 是一个功能强大、快速、轻量的可嵌入式脚本语言,由标准的 ANSI C 实现,由于拥有一组精简的强大特性,以及容易使用的 C API,这使得它可以很容易嵌入或扩展到其他语言中使用,并且有个非官方认领的中文名 -- “撸啊”,
安装 Lua
Lua 安装很简单,把源码下载下来后,直接 make 就行:
代码如下:
wget www.lua.org/ftp/lua-5.2.2.tar.gz
tar -zxvf lua-5.2.2.tar.gz
cd lua-5.2.2
make generic
make install
lua -e ‘print(“Hello World!”)‘
如果是 Mac 用户,并且装有 Homebrew 的话,一条指令就行:
代码如下:
brew install lua
Lua 是动态(弱)类型的语言,它有一下几种数据结构:
nil(空)
nil 类型表示一种没有任何有效值,它只有一个值 -- nil,例如打印一个没有赋值的变量,便会输出一个 nil 值:
代码如下:
print(type(a))
对于全局变量和 table,nil 还有一个“删除”作用,给全局变量或者 table 表里的变量赋一个 nil 值,等同于把它们删掉,执行下面代码就知:
代码如下:
tab1 = { key1 = “val1”, key2 = “val2”, “val3” }
for k, v in pairs(tab1) do
print(k .. “ - ” .. v)
end
tab1.key1 = nil
for k, v in pairs(tab1) do
print(k .. “ - ” .. v)
end
boolean(布尔)
boolean 类型只有两个可选值:true(真) 和 false(假),Lua 把 false 和 nil 看作是“假”,其他的都为“真”
代码如下:
print(type(true))
print(type(false))
print(type(nil))
if type(false) or type(nil) then
print(“false and nil are false!”)
else
print(“other is true!”)
end
number(数字)
Lua 默认只有一种 number 类型 -- double(双精度)类型(默认类型可以修改 luaconf.h 里的定义),以下几种写法都被看作是 number 类型:
代码如下:
print(type(2))
print(type(2.2))
print(type(0.2))
print(type(2e+1))
print(type(0.2e-1))
print(type(7.8263692594256e-06))
string(字符串)
字符串由一对双引号或单引号来表示
代码如下:
string1 = “this is string1”
string2 = ‘this is string2‘
也可以用 2 个方括号 “[[]]” 来表示“一块”字符串
代码如下:
html = [[
just a link
]]
print(html)
在对一个数字字符串上进行算术操作时,Lua 会尝试将这个数字字符串转成一个数字
代码如下:
print(“2” + 6)
print(“2” + “6”)
print(“2 + 6”)
print(“-2e2” * “6”)
print(“error” + 1)
使用 .. 连接字符串
代码如下:
print(“a” .. ‘b‘)
print(157 .. 428)
使用 # 作为长度操作符,放在字符串前面可以获取该字符串的长度
代码如下:
len = “length”
print(#len)
print(#“length”)
table(表)
在 Lua 里,table 的创建是通过“构造表达式”来完成,最简单构造表达式是{},用来创建一个空表,
也可以在表里添加一些数据,直接初始化表:
代码如下:
-- 创建一个空的 table
local tbl1 = {}
-- 直接初始表
local tbl2 = {“apple”, “pear”, “orange”, “grape”}
Lua 中的表(table)其实是一个“关联数组”(associative arrays),数组的索引可以是数字或者是字符串
代码如下:
a = {}
a[“key”] = “value”
key = 10
a[key] = 22
a[key] = a[key] + 11
for k, v in pairs(a) do
print(k .. “ : ” .. v)
end
不同于其他语言的数组把 0 作为数组的初始索引,在 Lua 里表的默认初始索引一般以 1 开始
代码如下:
local tbl = {“apple”, “pear”, “orange”, “grape”}
for key, val in pairs(tbl) do
print(“Key”, key)
end
table 的变量只是一个地址引用,对 table 的操作不会产生 table 的副本或创建新的 table
代码如下:
a1 = {}
a1[“key”] = “val1”
a2 = a1
print(a2[“key”])
a2[“key”] = “val2”
print(a1[“key”])
print(a1.key)
table 不会固定长度大小,有新数据添加时 table 长度会自动增长,没初始的 table 都是 nil
代码如下:
a3 = {}
for i = 1, 10 do
a3[i] = i
end
a3[“key”] = “val”
print(a3[“key”])
print(a3[“none”])
function(函数)
在 Lua 中,函数是被看作是“第一类值(First-Class Value)”,函数可以存在变量里
代码如下:
function factorial1(n)
if n == 0 then
return 1
else
return n * factorial1(n - 1)
end
end
print(factorial1(5))
factorial2 = factorial1
print(factorial2(5))
function 可以以匿名函数(anonymous function)的方式通过参数传递
代码如下:
function anonymous(tab, fun)
for k, v in pairs(tab) do
print(fun(k, v))
end
end
tab = { key1 = “val1”, key2 = “val2” }
anonymous(tab, function(key, val)
return key .. “ = ” .. val
end)
thread(线程)
在 Lua 里,最主要的线程是协同程序(coroutine)。它跟线程(thread)差不多,拥有自己独立的栈、局部变量和指令指针,可以跟其他协同程序共享全局变量和其他大部分东西。
线程跟协程的区别:线程可以同时多个运行,而协程任意时刻只能运行一个,并且处于运行状态的协程只有被挂起(suspend)时才会暂停。
userdata(自定义类型)
userdata 是一种用户自定义数据,用于表示一种由应用程序或 C/C++ 语言库所创建的类型,可以将任意 C/C++ 的任意数据类型的数据(通常是 struct 和 指针)存储到 Lua 变量中调用。
篇5:Sybase的数据类型
在创建表或声明局部变量时,必须使用Sybase系统预定义类型,
1.字符类型
Char(n) VarChar(n)
2.数值类型
整数类型——Integer SmallInt TinyInt
浮点类型——Real Float Number[P,S] Decimal[P,S]
货币类型——Money SmallMoney
3.日期/时间类型
Datetime SmallDatetime
两者时间部分的精度不同,前者精确到分,后者精确到1/30秒,
4.文本和图像类型
Text Image
5.二进制数据类型
Binary(n) VarBinary(n)
篇6:微型计算机的基本数据类型
微型计算机的基本数据类型
高级语言中有多种数据类型,如带符号整数、无符号整数、长整数、实型数、长实型数、字符型等,这里所介绍的数据类型是基于数据的位宽,不考虑编程语言中的实际内涵,它们是字节、字、双字和四字。
在微型计算机中一个8位的二进制数据称为一个字节(Byte);一个16位的二进制数据称为一个字(Word),字可以看成由两个字节数据所组成;一个32位的二进制数据称为一个双字(DoubleWord),双字可以看成由两个字或4个字节所组成;一个64位的二进制数据称为一个四字(QuadWord),同样,四字可以看成由两个双字或4个字或8个字节所组成,
在存储器中一个存储单元可以存放一个字节数据,因此,上面四种类型的数据在存储器中存放时分别占用1个、2个、4个和8个存储单元,如果超过一个存储单元,则这些单元必须是相邻的,或者说一个数据必须放在相邻的存储单元中。在x86体系微型计算机(采用:Intelx86系列或兼容的CPU)中,每种数据类型的最低的一个字节总是存放在较低地址处,然后向地址增加方向按顺序依次排列,如图1.13所示。通常将数据最低一个字节所在存储单元的地址说成是该数据的地址。
篇7:笔试题基本数据类型
笔试题(基本数据类型)
JAVA:
基本数据类型和类封装器的知识
基本数据类型的默认值
Overloading和overriding
JNI是什么?有什么特点?
看代码确定是编译期错误还是执行期错误
多线程中Thread和runnable的实现和使用
数据提升和cast
有效的.标识符
String的实例个数
==和equals的区别
同步锁
Notify和sleep的作用,区别
抽象类和interface
Try catch finally throwable throw的区别和用法
结合命令行参数考java数组的定义和使用
Celi,floor,abs,round的用法
篇8:uniqueidentifier 数据类型数据库教程
数据|数据类型
想要产生这种唯一标识的格式的数据:
6F9619FF-8B86-D011-B42D-00C04FC964FF
应该怎么做呢?
================================================================
答:
uniqueidentifier 数据类型可存储 16 字节的二进制值,其作用与全局唯一标识符 (GUID) 一样,GUID 是唯一的二进制数;世界上的任何两台计算机都不会生成重复的 GUID 值。GUID 主要用于在拥有多个节点、多台计算机的网络中,分配必须具有唯一性的标识符。
uniqueidentifier 列的 GUID 值通常通过下列方式之一获取:
在 Transact-SQL 语句、批处理或脚本中调用 NEWID 函数。
在应用程序代码中,调用返回 GUID 的应用程序 API 函数或方法。
Transact-SQL NEWID 函数以及应用程序 API 函数和方法用它们的网卡的标识号加上 CPU 时钟的唯一编号来生成新的 uniqueidentifier 值。每个网卡都有唯一的标识号。NEWID 返回的 uniqueidentifier 值是通过使用服务器上的网卡而生成的。应用程序 API 函数和方法返回的 uniqueidentifier 值是通过使用客户端中的网卡而生成的。
uniqueidentifier 值通常不定义为常量。您可以按下列方式指定 uniqueidentifier 常量:
字符串格式:'6F9619FF-8B86-D011-B42D-00C04FC964FF'
二进制格式:0xff6f868b11d0b42d00c04fc964ff
uniqueidentifier 数据类型不会按照 IDENTITY 属性的方式为插入的行自动生成新的 ID。例如,若要获取新的 uniqueidentifier 值,则表必须具有指定 NEWID 函数或 NEWSEQUENTIALID 函数的 DEFAULT 子句,或 INSERT 语句必须使用 NEWID 函数。
CREATE TABLE MyUniqueTable
(UniqueColumn UNIQUEIDENTIFIER DEFAULT NEWID,
Characters VARCHAR(10) )
GO
INSERT INTO MyUniqueTable(Characters) VALUES ('uiok')
INSERT INTO MyUniqueTable VALUES (NEWID(), 'uiok')
GO
注意:
您可以使用 NEWSEQUENTIALID 生成 GUID 以减少叶级别索引上的页争用,
NEWSEQUENTIALID 只能与 uniqueidentifier 类型的表列的 DEFAULT 约束一起使用。
uniqueidentifier 列中可以多次出现某个 uniqueidentifier 值,除非对该列也指定了 UNIQUE 或 PRIMARY KEY 约束。当多个行引用源表中的同一个主键时,引用其他表中 uniqueidentifier 主键的外键列中可以多次出现各个 uniqueidentifier 值。
一个表可以有多个 uniqueidentifier 列。每个表中可以指定一个具有 ROWGUIDCOL 属性的 uniqueidentifier 列。ROWGUIDCOL 属性指明此列的 uniqueidentifier 值可唯一地标识表中的行。但是,属性不会执行任何强制实现唯一性的操作。必须使用其他机制强制实现唯一性,例如指定列的 PRIMARY KEY 约束。ROWGUIDCOL 属性主要用于 Microsoft SQL Server 复制。具有更新订阅的合并复制和事务复制使用 uniqueidentifier 列来确保在表的多个副本中唯一地标识行。
uniqueidentifier 数据类型具有下列缺点:
值长且难懂。这使用户难以正确键入它们,并且更难记住。
这些值是随机的,而且它们不支持任何使其对用户更有意义的模式。
也没有任何方式可以决定生成 uniqueidentifier 值的顺序。它们不适用于那些依赖递增的键值的现有应用程序。
当 uniqueidentifier 为 16 字节时,其数据类型比其他数据类型(例如 4 字节的整数)大。这意味着使用 uniqueidentifier 键生成索引的速度相对慢于使用 int 键生成索引的速度。
在不要求全局唯一性或首选使用按序列增加的键时,请考虑使用 IDENTITY 属性。
篇9:跟我学SQL:串行数据类型
SQL的数据类型决定了一个字段的内容在数据库中会被如何处理、存储和显示,SQL92定义了标准的数据类型,目的是给数据库制造商建立自己的数据类型提供蓝图。在前面的文章中,我们介绍了一些常用的数据类型,这些数据类型分为四大类:
串行
数值
日期时间
区间型
本文将向你概述这些数据类型在数据库中是如何使用的,然后着重解释串行数据类型。这些信息可以作为有用的参考,或者作为关于某个数据库制造商具体产品中数据类型的背景知识。
使用数据类型
当你在数据库中创建了一个表格,你就定义了每列的名字以及要输入到这些列中的内容的数据类型。从先前的文章中借用一个例子:
CREATE TABLE Products
(prod_id INT(16)AUTO_INCREMENT, prod_color VARCHAR(20),
prod_descr VARCHAR(255), prod_size DECIMAL(8,2),
UNIQUE (`prod_id`));
在以上的查询中,定义行prod_color VARCHAR(20)发出指令要创建一个列,名字是prod_color,数据类型是VARCHAR,长度为20。
你的数据库使用和每个类型相关的描述符来区别数据类型。例如,VARCHAR数据类型的描述符所含的信息将它区别为串行数据型,它包含所有的串字符,其长度是可变的。数据库里列的定义还包含了其他信息,例如对应于数据类型的特定长度。
如前所述,每个数据库制造商都希望在SQL92定义的标准上建立自己的数据类型。这样每个数据库在定义数据类型时都能够设定自己所需要的最大容量限制和其他属性。许多数据库使用的数据类型名字和这里列出来的一样,尽管每种的实现方法都有微小的差别。要确定特定数据类型使用方法的细节最好的方法还是查阅数据库制造商的文档。
已经说过了,希望对标准字符串数据类型有更多的了解就往下看。
串
有两种主要的串行数据类型:字符和位。串行使用数据库里由SQL_TEXT所定义的字符。SQL_92标准同时还提供了NATIONAL CHARACTER(国家字符集)和NATIONAL CHARACTER VARYING(国家字符集变体),这两者都能使用可定义字符集。后者的处理方法和CHARACTER以及CHARACTER VARYING类型一样。
CHARACTER | CHAR
使用方法:CHARACTER(clength) | CHAR(clength)
CHARACTER和CHAR这两个关键字是相同的。
CHARACTER类型一个突出的特点是它们能够包含这个字符。
CHARACTER 类型包含了固定长度的串字符(来自SQL_TEXT的语言集),clength。
字符在值的长度小于clength时起填充作用,
这表示CHARACTER字段的长度是固定的。
你可以把CHARACTER的数据类型字段和相同类型的其他允许不同长度的字段比较,或者和CHARACTER VARYING 数据类型比较。
有些数据库允许和数值数据类型比较。
CHARACTER VARYING | CHAR VARYING | VARCHAR
使用方法:CHARACTER VARYING(maxlength) | CHAR VARYING(maxlength) | VARCHAR(maxlength)
CHARACTER VARYING,CHAR VARYING,和VARCHAR这几个关键字是相同的。
这些类型能容纳最大长度的字符串,maxlength。
数据库把字段的长度作为值的实际长度。
你可以把这些数据类型的字段和相同类型的其他允许不同最大长度的字段比较。
BIT
使用方法:BIT(blength)
这种类型包含了带有长度的位字符(1和0),blength。例如,如果我们使用BIT(2),样本值将为“01”。
有的数据库会在串的开头插入空位,其的则会填充它们以符合固定长度的要求。
位字符是串,不是整数。
你可以把BIT数据类型的字段与相同类型的允许不同长度的其它字段比较,或者和BIT VARYING数据类型比较。
有些数据库允许BITS和CHARACTER或者INTEGER类型比较。
BIT VARYING
使用方法: BIT VARYING(maxlength)
这种类型包含了最大长度的位字符,maxlength。
所记录的长度被设为值的实际长度。
数据库允许和其的BIT VARYING数据字段比较,或者和BIT的数据字段比较。
对我们的SQL系列有了一些了解了吗?
请把你的评论、问题或者回应发到下面的讨论栏,或者如果你有关于SQL基础系列的论题,可以发到我们编辑的信箱。
串理论
数据库生产商通过建立这些基础的数据类型来创建你实际要实现的数据类型。对于字符串,这就可能包括相同名字的(不同)类型,例如CHAR或BIT,或者扩展到包括TEXT,SMALL TEXT,以及包含字符串的其他数据类型。
数据从一个数据库迁移到另一个数据库时,这种设计上的弹性产生了一个必须克服的障碍。在一个数据库里,你可能会有一个叫做CHAR的类型,这个类型所允许的最大容量大于你要迁移到的数据库的最大容量。而且,(SQL92)标准中没有明确定义的类型可能会变化较大,这样的话只用遵从惯例来简化迁移。
在ZDNet China最近的文章《BLOB移植的替换方案》中讨论了存在数据类型移植问题时保护数据的一个可能的解决方案。SQL标准没要包括存储二进制数据的指标,这造成了不同数据库制造商产品间的不兼容。软件开发者必须找到提到方案列清除这些障碍。
在这个系列的下一篇文章中,我们会看看SQL92的数字数据类型,每个有什么特点,以及对要实现这些类型的数据库的要求。
★数字诗
★数字对联
★数字教材
文档为doc格式