SQL Server 2008 数据类型 在创建表时,必须为表中的每列指派一种数据类型。本节将介绍 SQL Server 中最常用的一些数据类型。即使创建自定义数据类型,它也必须基于一种标准的SQL Server 数据类型。例如,可以使用如下语法创建一种自定义数据类型(Address),但要注意,它基于 SQL Server 标准的varchar 数据类型。 1. CREATE TYPE Address 2. FROM varchar(35) NOT NULL 如果在SQL Server Management Studio 的表设计界面中更改一个大型表中某列的数据类型,那么该操作可能需要很长时间。可以通过在Management Studio 界面中脚本化这种改变来观察其原因。Management Studio 再创建一个临时表,采用像 tmpTableName 这样的名称,然后将数据复制到该表中。最后,界面删除旧表并用新的数据类型重命名新表。当然,此过程中还涉及其他一些用于处理表中索引和其他任何关系的步骤。 如果有一个包含数百万条记录的大型表,则该过程可能需要花费十分钟,有时可能是数小时。为避免这种情况,可在查询窗口中使用简单的单行 T-SQL 语句来更改该列的数据类型。例如,要将 Employees 表中JobTitle 列的数据类型改为varchar(70),可以使用如下语法。 1. ALTER TABLE HumanResources.Employee ALTER COLUMN JobTitle Varchar(70) 说明: 在转换为与当前数据不兼容的数据类型时,可能丢失重要数据。例如,如果要将包含一些数据(如15.415)的numeric 数据类型转换为integer 数据类型,那么 15.415 这个数据将四舍五入为整数。 您可能想对 SQL Server 表编写一个报表,显示表中每列的数据类型。完成这项任务的方法有很多种,但最常见的一种方法是连接 sys.objects 表和 sys.columns 表。在下面的代码中,有两个函数可能不太为您所熟悉。函数TYPE_NAME()将数据类型id 转换为适当的名称。要进行反向操作,可使用 TYPE_ID()函数。需要注意的另一个函数是 SCHEMA_ID(),它用于返回架构的标识值。在需要编写有关 SQL Server 元数据的报表时,这是特别有用的。 1. SELECT o.name AS ObjectName, 2. c.name AS ColumnName, 3. TYPE_NAME(c.user_type_id) as DataType 4. FROM sys.objects o JOIN sys.columns c 5. ON o.object_id = c.object_id 6. WHERE o.name ='Department' 7. and o.Schema_ID = SCHEMA_ID('HumanResources') 该代码返回如下结果(注意,Name 是...