SQL Server检索ntext、text和image数据类型的注意事项

数据库 SQL Server
SQL Server中ntext、text和image数据类型在单个值中可以包含非常大的数据量,在检索这些值时,通常需要一些特殊的步骤。

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 表达式中。

处理较大的数据值
但是,如果 ntext、text 和 image 数据值较大,则必须逐块处理。Transact-SQL 和数据库 API 均包含使应用程序可以逐块处理 ntext、text 和 image 数据的函数。

数据库 API 按照一种通用的模式处理长 ntext、text 和 image 列:

若要读取一个长列,应用程序只需在选择列表中包含 ntext、text 或 image 列,并将该列绑定到一个程序变量,该变量应足以容纳适当的数据块。然后,应用程序就可以执行该语句,并使用 API 函数或方法将数据逐块检索到绑定的变量中。

若要写入一个长列,应用程序可使用参数标记 (?) 在相应位置代替 ntext、text 或 image 列中的值,以执行 INSERT 或 UPDATE 语句。参数标记(对 ADO 而言则为参数)被绑定到一个足以容纳数据块的程序变量上。应用程序进入循环,在循环中先将下一组数据移到绑定的变量中,然后调用 API 函数或方法写入数据块。这一过程将反复进行,直到整个数据值发送完毕。
使用 text in row
在 Microsoft SQL Server 2000 中,用户可以在表上启用 text in row 选项,以使该表能够在其数据行中存储 text、ntext 或 image 数据。

若要启用该选项,请执行 sp_tableoption 存储过程,将 text in row 指定为选项名并将 on 指定为选项值。BLOB(二进制大对象:text、ntext 或 image 数据)行中可以存储的默认***大小为 256 字节,但是值的范围可以从 24 到 7000。若要指定默认值以外的***大小,请指定该范围内的整数作为选项值。

如果应用下列条件,则将 text、ntext 或 image 字符串存储在数据行中:

启用 text in row。

字符串的长度比 @OptionValue 所指定的限制短

数据行中有足够的可用空间。
当 BLOB 字符串存储在数据行中时,读取和写入 text、ntext 或 image 字符串可以与读取或写入字符串和二进制字符串一样快。SQL Server 不必访问单独的页以读取或写入 BLOB 字符串。

如果 text、ntext 或 image 字符串比行中所指定的限制或可用空间大,则将指针存储在该行中。在行中存储 BLOB 字符串的条件仍然适用,但是:数据行中必须有足够的空间容纳指针。

 

 

 

【编辑推荐】

SQL SERVER口令管理的脆弱性

带您深入了解SQL Server数据库管理

手工分析DB2 sql文执行计划

DB2分类取前N个记录的SQL语句

SQL SERVER连接DB2数据库

责任编辑:段燃 来源: 互联网那个
相关推荐

2010-07-15 13:38:35

2010-07-20 13:02:03

SQL Server索

2010-07-19 14:37:20

SQL Server

2013-02-26 14:07:52

SQL Server虚拟化

2011-08-25 15:54:30

SQL Serverbit字段类型

2010-07-16 14:01:22

安装SQL Serve

2010-07-22 17:57:40

2019-11-27 10:46:06

sqlserver数据库sql

2011-04-11 16:23:57

2010-07-26 10:59:59

SQL Server游

2023-04-28 15:05:25

React软件项目可维护性

2010-07-01 16:45:15

SQL Server

2010-07-23 10:09:41

SQL Server

2024-03-20 15:58:29

2010-06-29 17:32:13

SQL Server锁

2010-09-06 16:25:46

SQL函数

2009-12-22 09:48:58

WCF枚举类型

2011-05-26 11:22:04

SEO

2018-11-16 15:15:18

SQL Server数据库程序员

2022-09-23 09:25:04

代码方法
点赞
收藏

51CTO技术栈公众号