数据类型用法

SQL Server Native Client ODBC 驱动程序和 SQL Server 执行以下数据类型用法。

数据类型

限制

日期文字

日期文字存储在 SQL_TYPE_TIMESTAMP 列(SQL Server 数据类型 datetimesmalldatetime)中时,则具有时间值 12:00:00.000 A.M。

moneysmallmoney

moneysmallmoney 数据类型中仅整数部分很重要。如果 SQL money 数据的小数部分在数据类型转换期间发生截断,则 SQL Server Native Client ODBC 驱动程序将返回警告而不是错误。

SQL_BINARY(可以为 Null)

连接到 SQL Server 6.0 版和更早版本的实例时,如果 SQL_BINARY 列可以为 Null,则在数据源中存储的数据不使用零进行填充。检索来自这样的列中的数据时,SQL Server Native Client ODBC 驱动程序将在数据右侧以零进行填充。但是,在由 SQL Server 执行的操作(比如串联)中所创建的数据则没有这样的填充。

而且,在 SQL Server 6.0 或更早版本的实例中将数据放在这样的列中时,如果数据太长而无法放入列中,则 SQL Server 将截断右侧数据。

注意注意
SQL Server Native Client ODBC 驱动程序支持与 SQL Server 6.5 和更早版本的连接。

SQL_CHAR(截断)

在连接到 SQL Server 6.0 和更早版本的实例并将数据放入 SQL_CHAR 列中时,如果数据太长而无法放入该列中,则 SQL Server 将在没有警告的情况下从右侧截断它。

注意注意
SQL Server Native Client ODBC 驱动程序支持与 SQL Server 6.5 和更早版本的连接。

SQL_CHAR(可以为 Null)

连接到 SQL Server 6.0 和更早版本的实例时,如果 SQL_CHAR 列可以为 Null,则不以空白填充数据源中存储的数据。检索来自这样的列中的数据时,SQL Server Native Client ODBC 驱动程序将在数据右侧以空白进行填充。但是,在由 SQL Server 执行的操作(比如串联)中所创建的数据则没有这样的填充。

注意注意
SQL Server Native Client ODBC 驱动程序支持与 SQL Server 6.5 和更早版本的连接。

SQL_LONGVARBINARY、SQL_LONGVARCHAR、SQL_WLONGVARCHAR

连接到 SQL Server 6.x 和更高版本的实例时,完全支持对具有 SQL_LONGVARBINARY、SQL_LONGVARCHAR 或 SQL_WLONGVARCHAR 数据类型(使用 WHERE 子句)的列执行涉及多个行的更新。连接到 SQL Server 4.2x 实例时,如果更新影响多个行,将返回 S1000 错误“部分插入/更新。文本或图像列的插入/更新失败”。

注意注意
SQL Server Native Client ODBC 驱动程序支持与 SQL Server 6.5 和更早版本的连接。

字符串函数参数

字符串函数的 string_exp 参数的数据类型必须是 SQL_CHAR 或 SQL_VARCHAR。在字符串函数中不支持 SQL_LONG_VARCHAR 数据类型。count 参数必须小于或等于 8,000,因为 SQL_CHAR 和 SQL_VARCHAR 数据类型的长度最大不能超过 8,000 字符。

时间文字

时间文字存储在 SQL_TIMESTAMP 列(SQL Server 数据类型 datetimesmalldatetime)中,则具有日期值 1900 年 1 月 1 日。

timestamp

仅 NULL 值可以手动插入到 timestamp 列中。但是,由于 SQL Server 将自动更新 timestamp 列,因此将覆盖 NULL 值。

tinyint

SQL Server tinyint 数据类型是无符号类型。默认情况下 tinyint 列将绑定到数据类型为 SQL_C_UTINYINT 的变量。

别名数据类型

连接到 SQL Server 4.2x 实例时,ODBC 驱动程序会在未显式声明列的为 Null 性的列定义中添加 NULL。因此,将忽略在别名数据类型的定义中存储的为 Null 性。

连接到 SQL Server 4.2x 实例时,对于具有基础数据类型 charbinary 并且没有声明为 Null 性的别名数据类型列,将创建为 varcharvarbinary 数据类型。SQLColAttributeSQLColumnsSQLDescribeCol 返回 SQL_VARCHAR 或 SQL_VARBINARY 作为这些列的数据类型。不对从这些列检索的数据进行填充。

注意注意
SQL Server Native Client ODBC 驱动程序支持与 SQL Server 6.5 和更早版本的连接。

LONG 数据类型

SQL_LONGVARBINARY 和 SQL_LONGVARCHAR 数据类型的执行时数据参数均受到限制。

大值类型

在接受或返回 ODBC SQL 数据类型的 API 中,SQL Server Native Client ODBC 驱动程序将 varchar(max)varbinary(max)nvarchar(max) 类型分别公开为 SQL_VARCHAR、SQL_VARBINARY 和 SQL_WVARCHAR。

用户定义类型 (UDT)

UDT 列被映射为 SQL_SS_UDT。如果使用 UDT 的 ToString() 或 ToXMLString() 方法或者通过 CAST/CONVERT 函数,在 SQL 语句中将 UDT 列显式映射到另一种类型,则在结果集中该列的类型将反映该列被转换成的实际类型。

SQL Server Native Client ODBC 驱动程序只能作为二进制文件绑定到 UDT 列。SQL Server 仅支持在 SQL_SS_UDT 和 SQL_C_BINARY 数据类型之间的转换。

XML

SQL Server 会自动将 XML 转换为 Unicode 文本。XML 类型将映射为 SQL_SS_XML。

请参阅

概念