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- ...
随机推荐
- Clover KextsToPatch 使用方法 2015.10.21
Clover KextsToPatch 使用方法 2015.10.21 前些天,因为 Thinkpad X230 BIOS 白名单限制,给她换了一块 ar9285 无线网卡,只是因为这块网卡正好可 ...
- Sass基本数据类型和各类型的原生方法
数据类型: 数字:1,2,3,11,10px (可以带单位) 字符串:"asd",'asd',asd (有引号和无引号都是字符串类型) 如 $name : zhang san ; ...
- JS添加验证页面中script标签中是否存在jquery文件
window.onload = function() { var al = document.getElementsByTagName("script"); var new_ele ...
- emoji等表情符号存mysql的方法
项目中需要存储用户信息(用户昵称有表情符号),自然就遇到了emoji等表情符号如何被mysql DB支持的问题 这里引用先行者博文:https://segmentfault.com/a/1190000 ...
- Web安全XSS、CSRF和SQL注入
SQL注入 SQL注入是以用户的输入作为sql语句的一部分,如后端接收到用户的请求数据后,不经过数据转义,就把数据拼接到SQL中执行,容易导致SQL的语义被篡改,即受到攻击了. 解决办法是对接收的数据 ...
- Web框架之Django_04 模板层了解(过滤器、标签、自定义过滤器、标签、inclusion_tag、模板的继承与导入)
摘要: 模版层(模板语法) 模板语法 过滤器 标签 自定义过滤器.标签 inclusion_tag 模板的继承 模板的导入 一.模板语法: 常用语法:{{ }} 变量相关{% %} ...
- Python模块(一)(常用模块)
1. 简单了解模块 写的每一个py文件都是一个模块. 还有一些我们一直在使用的模块 buildins 内置模块. print, input random 主要是和随机相关的内容 random() ...
- Aizu-ALDS1_3_A:Stack
D - Stack Write a program which reads an expression in the Reverse Polish notation and prints the co ...
- 关于django form验证是否用户名已存在
想通过django的Form模块进行数据库中是否已存在用户名的验证,首先我先调用了数据库用户名字段所有的值,发现是个queryset对象. 随后经过查询后发现queryset查询集对象可以调用list ...
- PYDay1-洗剑
学习语言的阶段: 第一阶段:所有东西都是新的::一个月 第二阶段:开始懂一些::一个月 第三阶段:感觉自己是不可战胜的:第三~第四个月 第四阶段:突然感觉什么都不知道,开发是无止境的::培训阶段不会遇 ...