SQL Server 存储字符数较大字段的问题
SQL Server 2000专门提供了处理text,ntext,image字段的函数,他们是:
TEXTPTR
TEXTVALID
READTEXT
UPDATETEXT
WRITETEXT
一般作用方法
写字段WRITETEXT :
DECLARE @val varbinary(16)
SELECT @val = TEXTPTR(字段名) FROM 表名 where 条件
WRITETEXT 表名.字段名 @val '您的长字符串,一般都是大于8000的,不大于也行'
说明:第二行加上条件 可以定位当前操作的是哪一条记录。
修改字段UPDATETEXT:
DECLARE @val varbinary(16)
SELECT @val = TEXTPTR(字段名) FROM 表名 where 条件
UPDATETEXT 表名.字段名 @val 0 NULL '您的长字符串,一般都是大于8000的,不大于也行'
--说明:第二行加上条件 可以定位当前操作的是哪一条记录,第三条里的0是说这个字段里从第0个字符开始,NULL表示,从0开始到这个字段最后的所有字符删掉
读字段READTEXT:
DECLARE @val varbinary(16)
SELECT @val = TEXTPTR(字段名) FROM 表名 where 条件
READTEXT 表名.字段名 @val 0 40000
--说明:第二行加上条件 可以定位当前操作的是哪一条记录,第三行后两个参数意为:从第0个字符开始,读40000个字符。
--您可以觉得这个函数完全没哈用处,是呀,我就感觉他没用,读取嘛,怎么读都可以读出来,所以直接读就可以了。
说明
UPDATETEXT
更新现有 text、ntext 或 image 字段。使用 UPDATETEXT 在适当的位置更改 text、ntext 或 image 列的一部分。使用 WRITETEXT 来更新和替换整个 text、ntext 或 image 字段。
语法
UPDATETEXT { table_name.dest_column_name dest_text_ptr
}
{
NULL | insert_offset
}
{
NULL | delete_length
}
[ WITH LOG ]
[ inserted_data
| { table_name.src_column_name src_text_ptr
}
]
参数
table_name.dest_column_name
要更新的表和 text、ntext 或 image 列的名称。表名和列名必须符合标识符的规则。有关更多信息,请参见使用标识符。指定数据库名和所有者名是可选的。
dest_text_ptr
指向要更新的 text、ntext 或 image 数据的文本指针的值(由 TEXTPTR 函数返回)。dest_text_ptr 必须为 binary(16)。
insert_offset
以
零为基的更新起始位置。对于 text 或 image 列,insert_offset 是在插入新数据前从现有列的起点开始要跳过的字节数对于
ntext 列,insert_offset 是字符个数(每个 ntext 字符占用 2 个字节)。开始于这个以零为基的起始点的现有
text、ntext 或 image 数据向右移,为新数据腾出空间。值为 0 表示将新数据插入到现有位置的开始处。值为 NULL
则将新数据追加到现有数据值中。
delete_length
是
从 insert_offset 位置开始的、要从现有 text、ntext 或 image 列中删除的数据长度。delete_length
值对于 text 和 image 列用字节指定,对于 ntext 列用字符指定。每个 ntext 字符占用 2 个字节。值为 0
表示不删除数据。值为 NULL 则删除现有 text 或 image 列中从 insert_offset 位置开始到末尾的所有数据。
WITH LOG
在 Microsoft? SQL Server? 2000 中被忽略。在该版本中,日志记录由数据库的有效恢复模型决定。
inserted_data
是
要插入到现有 text、ntext 或 image 列 insert_offset 位置的数据。这是单个
char、nchar、varchar、nvarchar、binary、varbinary、text、ntext 或 image
值。inserted_data 可以是文字或变量。
table_name.src_column_name
用作插入数据源的表或 text、ntext 或 image 列的名称。表名和列名必须符合标识符的规则。
src_text_ptr
指向作为插入数据源使用的 text、ntext 或 image 列的文本指针值(由 TEXTPTR 函数返回)。
WRITETEXT
允许对现有的 text、ntext 或 image 列进行无日志记录的交互式更新。该语句将彻底重写受其影响的列中的任何现有数据。WRITETEXT 语句不能用在视图中的 text、ntext 和 image 列上。
语法
WRITETEXT { table.column text_ptr
}
[ WITH LOG ] { data
}
参数
table.column
要更新的表和 text、ntext 或 image 列的名称。表名和列名必须符合标识符的规则。有关更多信息,请参见使用标识符。指定数据库名和所有者名是可选的。
text_ptr
指
向 text、ntext 或 image 数据的指针的值。text_ptr 的数据类型必须为 binary(16)。若要创建文本指针,请对
text、ntext 或 image 列用非 NULL 数据执行 INSERT 或 UPDATE 语句。有关创建文本指针的更多信息,请参见
INSERT 或 UPDATE。
WITH LOG
在 Microsoft? SQL Server? 2000 中忽略。日志记录由数据库的实际恢复模型决定。
data
要存储的实际 text、ntext 或 image 数据。data 可以是字面值,也可以是变量。对于 text、ntext 和 image 数据,可以用 WRITETEXT 交互插入的文本的最大长度大约是 120 KB。
SQL Server 存储字符数较大字段的问题的更多相关文章
- sql server数据库中char,varchar,nvarchar字段的区别
Char,varchar,nvarchar字段是sql server数据库中的三种字段类型.好多人在选择存储的时候不知道如何抉择,我给大家讲下这个三个字段类型的区别. Char(n)是长度为n个字节的 ...
- SQL SERVER存储引擎——04.数据
4. SQL SERVER存储引擎之数据篇 (4.1)文件 (0)主数据文件.mdf初始文件大小至少为3MB,次要数据文件.ndf初始大小,同日志文件一样至少为512KB: (1)SQL SERVER ...
- SQL Server存储ntext截断问题
SQL Server存储ntext截断问题 最近遇到一个问题:将大文本存储到数据库的时候,查询出来的文本却被截断了. 最后百度发现,作者提出 sql server management studi ...
- 【SQL Server】sql server更改了数据表的字段/新增数据表的字段 无法保存
sql server更改了数据表的字段/新增数据表的字段 无法保存 解决方法:进入 工具-->选项-->Designers-->表设计器和数据库设计器-->取消勾选 即可
- SQL Server 存储中间结果集
在SQL Server中执行查询时,有一些操作会产生中间结果集,例如:排序操作,Hash Join和Hash Aggregate操作产生的Hash Table,游标等,SQL Server查询优化器使 ...
- SQL Server 存储(1/8):理解数据页结构
我们都很清楚SQL Server用8KB 的页来存储数据,并且在SQL Server里磁盘 I/O 操作在页级执行.也就是说,SQL Server 读取或写入所有数据页.页有不同的类型,像数据页,GA ...
- SQL Server 存储(2/8):理解数据记录结构
在SQL Server :理解数据页结构我们提到每条记录都有7 bytes的系统行开销,那这个7 bytes行开销到底是一个什么样的结构,我们一起来看下. 数据记录存储我们具体的数据,换句话说,它存在 ...
- SQL Server存储机制
1.区段 区段(extent)是用来为表和索引分配空间的基本存储单元.它由8个连续的64KB数据页组成. 基于区段(而不是实际使用空间)分配空间的概念的要点: 一旦区段已满,那么下一记录将要占据的空间 ...
- SQL Server Integration Services的10大最佳实践
原文出处:https://blogs.msdn.microsoft.com/sqlcat/2013/09/16/top-10-sql-server-integration-services-best- ...
随机推荐
- 将 PROTOCOL 的方法声明为 MUTATING
将 PROTOCOL 的方法声明为 MUTATING 由 王巍 (@ONEVCAT) 发布于 2014/08/17 Swift 的 protocol 不仅可以被 class 类型实现,也适用于 str ...
- 文件读写FILE类
1. 新建一个文件: FILE *f = fopen("a.txt","w+"); (1)fopen()函数介绍fopen的原型是:FILE *fopen(co ...
- [LUOGU] P1111 修复公路
题目背景 A地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车.政府派人修复这些公路. 题目描述 给出A地区的村庄数N,和公路数M,公路是双向的.并告诉你每条公路的连着哪两个村庄,并告诉你什么时 ...
- verilog behavioral modeling --loop statement
1.forever 2.repeat 3.while 4.for The for statement accomplishes the same results as the following ps ...
- PAT Basic 1015
1015 德才论 宋代史学家司马光在<资治通鉴>中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得圣人,君子而与之,与其 ...
- iOS 开发之多线程之GCD
1.GCD(Grand Centrol Dispath) 并行:宏观以及微观都是两个人再拿着两把铁锹在挖坑,一小时挖两个大坑 并发:宏观上是感觉他们都在挖坑,微观是他们是在使用一把铁锹挖坑,一小时后他 ...
- Python算法-二叉树深度优先遍历
二叉树 组成: 1.根节点 BinaryTree:root 2.每一个节点,都有左子节点和右子节点(可以为空) TreeNode:value.left.right 二叉树的遍历: 遍历二叉树:深度 ...
- 汇编CMOS
汇编 端口 端口 前面讲过,各种存储器都和CPU的地址线.数据线.控制线相连.CPU在操控它们的时候,把它们都当作内存来对待,把它们总的看做一个由若干存储单元组成的逻辑存储器,这个逻辑器我们称其为内存 ...
- Palindrome Names
Palindrome Names Kattis - names Anna and Bob are having a baby. They both enjoy the advantage of hav ...
- Python之窗口操作之find_window,set_foreground等
在自动化测试过程中,常常需要模拟按键的操作,比如像窗口发送一个按键,实现鼠标点击的功能,在上一篇文章中,我和大家讨论了python文件生成为不依赖与python库的exe文件的方式(需要了解的朋友戳这 ...