在从服务器检索数据时,如果用户未指定任何 PHP 数据类型, Microsoft Drivers for PHP for SQL Server 会将数据转换为默认 PHP 数据类型。
当使用 PDO_SQLSRV 驱动程序返回数据时,数据类型将是 int 或 string。
本主题的其余部分讨论使用 SQLSRV 驱动程序的默认数据类型。
下表列出了 SQL Server 数据类型(从服务器检索的数据类型)、默认 PHP 数据类型(数据转换到的数据类型)以及流和字符串的默认编码。 有关如何在从服务器检索数据时指定数据类型的详细信息,请参阅 How to: Specify PHP Data Types。
| SQL Server 类型 | 默认 PHP 类型 | 默认编码 | 
|---|---|---|
| bigint | String | 8 位字符1 | 
| binary | Stream2 | Binary3 | 
| bit | Integer | 8 位字符1 | 
| char | String | 8 位字符1 | 
| date4 | datetime | 不适用 | 
| datetime4 | datetime | 不适用 | 
| datetime24 | datetime | 不适用 | 
| datetimeoffset4 | datetime | 不适用 | 
| Decimal | String | 8 位字符1 | 
| FLOAT | Float | 8 位字符1 | 
| geography | STREAM | Binary3 | 
| geometry | STREAM | Binary3 | 
| image5 | Stream2 | Binary3 | 
| int | Integer | 8 位字符1 | 
| money | String | 8 位字符1 | 
| nchar | String | 8 位字符1 | 
| numeric | String | 8 位字符1 | 
| nvarchar | String | 8 位字符1 | 
| nvarchar(MAX) | Stream2 | 8 位字符1 | 
| ntext6 | Stream2 | 8 位字符1 | 
| real | Float | 8 位字符1 | 
| smalldatetime | datetime | 8 位字符1 | 
| smallint | Integer | 8 位字符1 | 
| smallmoney | String | 8 位字符1 | 
| sql_variant7 | String | 8 位字符1 | 
| text8 | Stream2 | 8 位字符1 | 
| time4 | datetime | 不适用 | 
| timestamp | String | 8 位字符1 | 
| tinyint | Integer | 8 位字符1 | 
| UDT | Stream2 | Binary3 | 
| uniqueidentifier | 字符串9 | 8 位字符1 | 
| varbinary | Stream2 | Binary3 | 
| varbinary(MAX) | Stream2 | Binary3 | 
| varchar | String | 8 位字符1 | 
| varchar(MAX) | Stream2 | 8 位字符1 | 
| xml | Stream2 | 8 位字符1 | 
- 数据以在系统上设置的 Windows 区域设置的代码页中指定的 8 位字符的形式返回。 任何多字节字符或未映射到此代码页中的字符都会替换为单字节问号 (?) 字符。 
- 如果 sqlsrv_fetch_array 或 sqlsrv_fetch_object 用于检索具有默认 PHP 类型 Stream 的字符串的数据,该数据将返回为具有与流相同的编码的字符串。 例如,如果 SQL Server 二进制类型使用 sqlsrv_fetch_array进行检索,默认返回类型将是二进制字符串。 
- 数据以原始字节流的形式从服务器返回,无需执行编码或转换。 
- 日期和时间类型可以字符串的形式检索。 有关详细信息,请参阅 如何:使用 SQLSRV 驱动程序以字符串的形式检索日期和时间类型。 
- 这是映射到 varbinary(max) 类型的旧类型。 
- 这是映射到 nvarchar(max) 类型的旧类型。 
- 双向或 output 参数中不支持 sql_variant。 
- 这是映射到 varchar(max) 类型的旧类型。 
- UNIQUEIDENTIFIER 是由以下正则表达式表示的 GUID: - [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-f]{4}-[0-9a-fA-f]{4}-[0-9a-fA-F]{12} 
其他 New SQL Server 2008 数据类型和功能
SQL Server 2008 中新增的和存在于列外(如表值参数)的数据类型在 Microsoft Drivers for PHP for SQL Server 中不受支持。 下表总结了对新的 SQL Server 2008 功能的 PHP 支持。
| Feature | PHP 支持 | 
|---|---|
| 表值参数 | 否 | 
| 稀疏列 | 部分 | 
| Null 位压缩 | 是 | 
| 大型 CLR 用户定义的类型 (UDT) | 是 | 
| 服务主体名称 | 否 | 
| MERGE | 是 | 
| FILESTREAM | 部分 | 
部分类型支持意味着你无法以编程方式查询列的类型。