SQL Server检索ntext、text和image数据类型的注意事项 |
本文标签:SQL Server检索 SQL Server检索数据时,根据不同的数据类型,SQL Server检索要注意的问题也不一样,下面就让我们一起来了解一下SQL Server检索ntext、text和image数据类型的注意事项 。 Microsoft® SQL Server™ 的 ntext、text 和 image 数据类型在单个值中可以包含非常大的数据量(最大可达 2 GB) 。单个数据值通常比应用程序在一个步骤中能够检索的大;某些值可能还会大于客户端的可用虚拟内存 。因此,在检索这些值时,通常需要一些特殊的步骤 。 如果 ntext、text 和 image 数据值不超过 Unicode 串、字符串或二进制串的长度(分别为 4,000 个字符、8,000 个字符和 8,000 个字节),就可以在 SELECT、UPDATE 和 INSERT 语句中引用它们,其引用方式与较小的数据类型相同 。例如,包含短值的 ntext 列可以在 SELECT 语句的选择列表中引用,这与 nvarchar 列的引用方式相同 。引用时必须遵守一些限制,例如不能在 WHERE 子句中直接引用 ntext、text 或 image 列 。这些列可以作为返回其它数据类型(例如 ISNULL、SUBSTRING 或 PATINDEX)的某个函数的参数包含在 WHERE 子句中,也可以包含在 IS NULL、IS NOT NULL 或 LIKE 表达式中 。 处理较大的数据值 数据库 API 按照一种通用的模式处理长 ntext、text 和 image 列: 若要读取一个长列,应用程序只需在选择列表中包含 ntext、text 或 image 列,并将该列绑定到一个程序变量,该变量应足以容纳适当的数据块 。然后,应用程序就可以执行该语句,并使用 API 函数或方法将数据逐块检索到绑定的变量中 。 若要写入一个长列,应用程序可使用参数标记 (?) 在相应位置代替 ntext、text 或 image 列中的值,以执行 INSERT 或 UPDATE 语句 。参数标记(对 ADO 而言则为参数)被绑定到一个足以容纳数据块的程序变量上 。应用程序进入循环,在循环中先将下一组数据移到绑定的变量中,然后调用 API 函数或方法写入数据块 。这一过程将反复进行,直到整个数据值发送完毕 。 若要启用该选项,请执行 sp_tableoption 存储过程,将 text in row 指定为选项名并将 on 指定为选项值 。BLOB(二进制大对象:text、ntext 或 image 数据)行中可以存储的默认最大大小为 256 字节,但是值的范围可以从 24 到 7000 。若要指定默认值以外的最大大小,请指定该范围内的整数作为选项值 。 如果应用下列条件,则将 text、ntext 或 image 字符串存储在数据行中: 启用 text in row 。 字符串的长度比 @OptionValue 所指定的限制短 数据行中有足够的可用空间 。 如果 text、ntext 或 image 字符串比行中所指定的限制或可用空间大,则将指针存储在该行中 。在行中存储 BLOB 字符串的条件仍然适用,但是:数据行中必须有足够的空间容纳指针 。
|