数据类型
在 Microsoft® SQL Server™ 中,每个列、局部变量、表达式和参数都有一个相关的数据类型,这是指定对象可持有的数据类型(整型、字符、money 等等)的特性。SQL Server 提供系统数据类型集,定义了可与 SQL Server 一起使用的所有数据类型。下面列出系统提供的数据类型集。可以定义用户定义的数据类型,其是系统提供的数据类型的别名。有关用户定义的数据类型的更多信息,请参见 sp_addtype 和创建用户定义的数据类型。当两个具有不同数据类型、排序规则、精度、小数位数或长度的表达式通过运算符进行组合时: 通过将数据类型的优先顺序规则应用到输入表达式的数据类型来确定所得值的数据类型。有关更多信息,请参见数据类型的优先顺序。
如果结果数据类型为 char、varchar、text、nchar、nvarchar 或 ntext,则结果值的排序规则由排序规则的优先顺序规则决定。有关更多信息,请参见排序规则的优先顺序。
结果的精度、小数位数及长度取决于输入表达式的精度、小数位数及长度。有关更多信息,请参见精度、小数位数和长度。 
SQL Server 为 SQL-92 兼容性提供了数据类型同义词。有关更多信息,请参见数据类型同义词。精确数字
整数
bigint从 -2^63 (-9,223,372,036,854,775,808) 到 2^63-1 (9,223,372,036,854,775,807) 的整型数据(所有数字)。int从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)。smallint从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型数据。tinyint从 0 到 255 的整数数据。bit
bit1 或 0 的整数数据。decimal 和 numeric
decimal从 -10^38 +1 到 10^38 –1 的固定精度和小数位的数字数据。 numeric功能上等同于 decimal。money 和 smallmoney
money货币数据值介于 -2^63 (-922,337,203,685,477.5808) 与 2^63 - 1 (+922,337,203,685,477.5807) 之间,精确到货币单位的千分之十。smallmoney货币数据值介于 -214,748.3648 与 +214,748.3647 之间,精确到货币单位的千分之十。近似数字
float浮点精度数字数据,有效值为:从 -1.79E + 308 到 -2.23E - 308,0 和 2.23E + 308 到 1.79E + 308。real浮点精度数字数据,有效值为:从 -3.40E + 38 到 -1.18E - 38,0 和 1.18E - 38 到 3.40E + 38。datetime 和 smalldatetime
datetime从 1753 年 1 月 1 日到 9999 年 12 月 31 日的日期和时间数据,精确到百分之三秒(或 3.33 毫秒)。smalldatetime从 1900 年 1 月 1 日到 2079 年 6 月 6 日的日期和时间数据,精确到分钟。字符串
char固定长度的非 Unicode 字符数据,最大长度为 8,000 个字符。varchar可变长度的非 Unicode 数据,最长为 8,000 个字符。text可变长度的非 Unicode 数据,最大长度为 2^31 - 1 (2,147,483,647) 个字符。Unicode 字符串
nchar固定长度的 Unicode 数据,最大长度为 4,000 个字符。 nvarchar可变长度 Unicode 数据,其最大长度为 4,000 字符。sysname 是系统提供用户定义的数据类型,在功能上等同于 nvarchar(128),用于引用数据库对象名。ntext可变长度 Unicode 数据,其最大长度为 2^30 - 1 (1,073,741,823) 个字符。二进制字符串
binary固定长度的二进制数据,其最大长度为 8,000 个字节。varbinary可变长度的二进制数据,其最大长度为 8,000 个字节。image可变长度的二进制数据,其最大长度为 2^31 - 1 (2,147,483,647) 个字节。其它数据类型
cursor游标的引用。sql_variant一种存储 SQL Server 支持的各种数据类型(text、ntext、timestamp 和 sql_variant 除外)值的数据类型。table一种特殊的数据类型,存储供以后处理的结果集。timestamp数据库范围的唯一数字,每次更新行时也进行更新。uniqueidentifier全局唯一标识符 (GUID)。

解决方案 »

  1.   

    排序规则
    在 Microsoft® SQL Server™ 2000 中,字符串的物理存储由排序规则控制。排序规则指定表示每个字符的位模式以及存储和比较字符所使用的规则。SQL Server 2000 支持在一个数据库中存储具有不同排序规则的对象。可为一直到列级的各级别指定不同的 SQL Server 2000 排序规则。可为表中的每列指派不同的排序规则。SQL Server 的早期版本仅支持每个 SQL Server 实例有一个排序规则。在 SQL Server 7.0 或更早的版本实例中创建的所有数据库和数据库对象具有相同的排序规则。字符数据的存储方式
    在计算机中,字符由不同的位模式(ON 或 OFF)表示。每个字节有 8 位,这 8 位可以有 256 种不同的 ON 和 OFF 组合模式。对于使用 1 个字节存储每个字符的程序,通过给每个位模式指派字符可表示最多 256 个不同的字符。2 个字节有 16 位,这 16 位可以有 65,536 种唯一的 ON 和 OFF 组合模式。使用 2 个字节表示每个字符的程序可表示最多 65,536 个字符。单字节代码页是字符定义,这些字符映射到每个字节可能有的 256 种位模式中的每一种。代码页定义大小写字符、数字、符号以及 !、@、#、% 等特殊字符的位模式。每种欧洲语言(如德语和西班牙语)都有各自的单字节代码页。虽然用于表示 A 到 Z 拉丁字母表字符的位模式在所有的代码页中都相同,但用于表示重音字符(如"é"和"á")的位模式在不同的代码页中却不同。如果在运行不同代码页的计算机间交换数据,必须将所有字符数据由发送计算机的代码页转换为接收计算机的代码页。如果源数据中的扩展字符在接收计算机的代码页中未定义,那么数据将丢失。如果某个数据库为来自许多不同国家/地区的客户端提供服务,则很难为该数据库选择这样一种代码页,使其包括所有客户端计算机所需的全部扩展字符。而且,在代码页间不停地转换需要花费大量的处理时间。仅靠单字节字符集存储许多语言所使用的字符也是不够的。例如,一些亚洲语言包含上千个字符,所以每个字符必须使用双字节。双字节字符集正是为这些语言定义的。但是,这些语言都有各自的代码页,在运行不同双字节代码页的计算机之间传输数据也存在困难。SQL Server 2000 支持两类字符数据类型: Unicode 数据类型 nchar、nvarchar 和 ntext。这些数据类型使用 Unicode 字符表示法。代码页不适用于这些数据类型。
    非 Unicode 字符数据类型 char、varchar 和 text。这些数据类型使用单字节或双字节代码页中定义的字符表示法。 
    有关字符数据的存储方式以及代码页、Unicode 和排序次序操作的更多信息,请参见在 http://msdn.microsoft.com MSDN® 页中的 Developing International Software for Windows 95 and Windows NT 4.0。国际化数据和 Unicode
    当只使用字符数据和代码页时,在一个数据库内很难以多种语言存储数据。很难为数据库找到一种代码页,能够存储所需全部语言特有的字符。对于运行各种代码页的不同客户端所读取和更新的特殊字符,要确保正确地转换也很困难。支持国际化客户端的数据库应始终使用 Unicode 数据,而不应使用非 Unicode 数据类型。例如,北美洲客户的数据库必须处理三种主要语言: 墨西哥使用的西班牙文名称和地址。
    魁北克使用的法文名称和地址。
    加拿大的其余地区和美国使用的英文名称和地址。 
    当只使用字符列和代码页时须小心,以确保数据库所安装的代码页能够处理这三种语言的字符。当其中一种语言的字符由运行另一种语言的代码页的客户端读取时,必须更加小心以确保能够正确转换字符。随着 Internet 的发展,支持众多运行不同区域设置的客户端计算机变得日益重要。很难选择这样一种代码页,使其包含的字符数据类型能够支持全球范围用户所需的全部字符。管理国际化数据库中的字符数据的最简单方法是始终使用 Unicode nchar、nvarchar 和 ntext 数据类型,代替对应的非 Unicode 数据类型(char、varchar 和 text)。如果所有使用国际化数据库的应用程序也采用 Unicode 变量而不是非 Unicode 变量,那么在系统中的任何地方都无须进行字符转换。每个客户端与所有其它客户端看见的字符数据都完全相同。对于可使用单字节代码页的系统,Unicode 数据需要的存储空间是非 Unicode 字符数据的两倍,但却消除了在代码页间转换扩展字符的必要,因此至少部分弥补了上面的不足。使用双字节代码页的系统没有这个问题。SQL Server 2000 将所有的文本化系统目录数据都存储在包含 Unicode 数据类型的列中。数据库对象(如表、视图和存储过程)的名称存储在 Unicode 列中。这样就可以只使用 Unicode 开发应用程序,从而避免了所有的代码页转换问题。排序次序
    排序次序指定 SQL Server 解释、排序、比较和显示字符数据所使用的规则。例如,排序次序定义"a"是小于、等于还是大于"b"。排序次序定义排序规则是否区分大小写,例如"m"和"M"是否相同。另外还定义排序规则是否区分重音,例如"á"和"ä"是否相同。SQL Server 2000 对每种排序规则使用两种排序次序,一种用于 Unicode 数据,另一种用于字符代码页。许多 SQL Server 排序规则使用相同的代码页,但是代码页的排序次序不同。这使站点得以选择: 是否仅根据位模式所表示的数字值来排序字符。二进制排序的速度最快,这是因为 SQL Server 不用做任何调整并可使用快速、简单的排序算法。二进制排序次序始终区分大小写。由于代码页中的位模式可能不按照特定语言的字典规则所定义的序列排列,二进制排序有时并不按照使用该语言的用户所期待的序列对字符进行排序。
    区分大小写还是不区分大小写。
    区分重音还是不区分重音。
      

  2.   

    比如在ACCESS里,有个字段是可以是真或假,在SQL SERVER里如何表示?
      

  3.   

    方法多了:
    0   真
    1   假
    ***********
    T   真
    F   假
    ***********
    随便你自己怎么设定。但是没有boolean这样的字段类型直接用来表示”true“、”false“。
      

  4.   

    可用bit类型,0 true,1 false,或相反.