SQL Server文本和图像函数
文本和图像函数
1、查找特定字符串PATINDEX
语法与字符串的patindex一样。
2、获取文本指针TEXTPTR
SQLServer在存储文本类型(ntext、text)和图像数据类型(image)时,默认情况是与常见的基本数据类型(如char、int等)这样的数据时单独存储的,也就是说,如 果一个表中的字段有基本类型和图像文本类型,那么,在输入数据时,基本类型和图像文件数据并不是保存在同一个页面上,而是分离存储的。分离存储后,那么基本类型数据和文本图像类型数据所在的页面就是通过文本指针建立联系,是一个16字节的二进制类型指针。在基本类型数据页面中存储的就是这些指向数据的指针,这样在需要的时候通过指针来操作文本和图像数据。Textptr函数就可以用于获得文本和图像数据存储的文本指针,这个指针获得后就可以被操作文本和图像数据的函数(wrutetext、readtext和updatetext等)进行操作。如果没有有效的指针,文本和图像函数是无法操作数据的。
语法结构:
textptr( column )
这里的column就是表中的文本和图像数据列(text、ntext和image)名称。
返回值:
varbinary类型16字节指针。
配合使用的函数:
在编写含有TEXTPTR函数的T-SQL代码时,下表所示的函数经常被使用。
| 格式 | 说明 |
| patindex('%pattern%',expression) | 返回字符串在text或ntext列中的字符位置 |
| datalength(expression) | 返回text、ntext和image列中数据的长度 |
| set textsize |
返回对select语句所返回的text、ntext或image数据的限制(字节数)。settextsize 0表示不限制。 |
| substring(text_column,start,length) | 返回二进制列中又指定的start偏移量和length指定的varchar类型的字符串。字符串的长度硬小于8kb |
3、检测文本指针是否有效TEXTVALID
textvalid函数用于检测文本指针是否有效。
语法结构:
textvalid( 'table.column',text_ptr )
参数说明:
table:表的名称,必须包含
column:表中的二进制数据列(text、ntext和image)名称
text_ptr:要检测的文本指针
返回值:
int,如果指针有效返回1,否则分那会0。
4、读取文本图像列内容READTEXT
readtext函数用于读取文本或图像列的内容,按照指定的偏移量开始读取指定字节数。如果是图像列(image),这样读取的是字节数,而不是现实图像本身。
语法结构:
readtext{ table.column text_ptr offset size } [holdlock]
参数说明:
table:表名称
column:列名称
text_ptr:有效的文本指针,即16字节的binary数据。
offset:开始读取text、image类型数据之前,要跳过的字节数。读取ntext类型数据之前要跳过的字符数。
size:读取的字节数(使用text或image数据类型时)或字符数(使用ntext数据类型时)。如果size为0,则读取4KB数据。
holdlock:使文本值被锁定以进行读取,直到十五结束为止。其他用户可以读取该值,但不能对其进行修改。
返回值:
varchar字符。
示例:以后写
5、写入文本图像列内容WRITETEXT
writetext函数用于向文本或图像写入内容,同时可以选择为最小日志记录,这样写入操作产生的日志写的I/O次数少,对数据库性能影响小。
语法结构:
writetext{ table.column text_ptr } [ with log ] { data }
参数说明:
table:表名称
column:列名称
text_ptr:有效的文本指针,即16字节的binary数据。
with log:由数据库的恢复模式来决定writetext操作产生的日志行为。因为text、ntext、imge类型的数据一般情况下都比较大。比如一幅图片可能上百KB,我们知道一个数据页面的容量是标准的8KB。所以一幅图片很可能就需要几时个甚至更多的数据页面,所以writetext操作所产生的I/O次数是很多的,而过多的I/O次数将影响数据库的性能。该参数的引入是交给数据库的恢复模式来决定的writetext操作将产生的日志行为。当数据库公仔在完全恢复模式时,产生的日志最多,因此对数据库性能的影响也最大。当工作在简单恢复模式时,产生的日志最少。
data:要存储的text、ntext或image类型的数据。writetext以交互方式插入的最大文本长度约为120KB。
6、更新文本图像列内容UPDATETEXT
updatetext函数更新文本或图像列中的内容。与writetext的区别在于该函数可以仅更新列中的一部分,而writetext是更新整个列。
语法结构:
updatetext{ table.name.dest_column_name dest_text_ptr }
{ null | insert_offset }
{ with log }
{ inserted_data | { table.name.src_column_name src_text_ptr } }
语法中的参数说明如下。
table_name:表名称。
dest_column_name:列名称。
dest_text_ptr:有效的文本指针,即16字节的binary数据。
insert_offset:以0为基础的更新其实位置,对于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位置开始到末尾的所有数据。
withlog:日子记录由数据库的当前模式决定。
inserted_date:要插入现有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函数获得。
SQL Server文本和图像函数的更多相关文章
- excel导入sql server 文本被截断,或者一个或多个字符在目标代码页中没有匹配项 错误处理
excel导入sql server 文本被截断,或者一个或多个字符在目标代码页中没有匹配项 错误处理方法: 方案1:修改注册表 出现文本被截断的原因是SQL Server的导入导出为了确定数据表的字段 ...
- Sql Server函数全解<三>数据类型转换函数和文本图像函数
阅读目录 一:数据类型转换函数 二:文本和图像函数 一:数据类型转换函数 在同时处理不同数据类型的值时,SQL Server一般会自动进行隐士类型转换.对于数据类型相近的值是有效的,比如int和flo ...
- Sql Server函数全解(三)数据类型转换函数和文本图像函数
一:数据类型转换函数 在同时处理不同数据类型的值时,SQL Server一般会自动进行隐士类型转换.对于数据类型相近的值是有效的,比如int和float,但是对于其它数据类型,例如整型和字符类型,隐士 ...
- sql server 函数详解(3)数据类型转换函数和文本图像函数
数据类型转换函数 文本和图像函数 --在同时处理不同数据类型的值时,SQL Server一般会自动进行隐士类型转换.对于数据类型相近的值是有效的,比如int和float,但是对于其它数据类型,例如整型 ...
- Sql server在使用sp_executesql @sql执行文本sql时,报错: Could not find database ID 16, name '16'. The database may be offline. Wait a few minutes and try again.
最近在公司项目中使用exec sp_executesql @sql执行一段文本sql的时候老是报错: Could not find database ID 16, name '16'. The dat ...
- 用FireDAC获取 SQL SERVER错误文本信息
SQL SERVER获取错误文本信息,BDE.adoquery一直取不到,FDQuery可以了 Some DBMS, like SQL Server, return messages as an ad ...
- Excel 导入 Sql Server出错——“文本被截断,或者一个或多个字符在目标代码页中没有匹配项”错误的解决
有人说应该先转成Access, 再转到Sql Server. 其实用处并不大, 要截断的还是被截断了. 原因是,SQL Server的导入导出为了确定数据表的字段类型,取excel文件的前8行来判别. ...
- Excel导入数据到Sql server 中出错:“文本被截断,或者一个或多个字符在目标代码页中没有匹配项”
从Excel导入数据到Sql server 时,由于表中的数据有的很长,导入时出现如下错误(如果数据不是很长,255内以内,则不会出现错误): 出错原因: SQL Server的导入导出为了确定数据表 ...
- [SQL SERVER] - 数据表 保存 / 查看 海量文本的方法
背景 WCF + EF + Sql Server 提供服务,包含一个数据上传功能,该方法接收客户端上传的对象列表(多张表单,每个表单包含千余条相关记录). 瓶颈 WCF 默认有文件大小(4M)和超时限 ...
随机推荐
- 【转】 xcode中常用快捷键图文并茂解释
图文解释XCode常用快捷键的使用 分类: iOS开发经验技巧2012-06-07 10:21 12774人阅读 评论(6) 收藏 举报 xcodecommand工具eclipsedeletego 刚 ...
- java.lang.NoSuchMethodError: org.springframework.beans.factory.annotation.InjectionMetadata.<init>(Ljava/lang/Class;)V
相应我,是因为你SPRING MVC的包没有加全.你可以新建一个WEB项目.加入SPRING 3.0 的所有包.主要是WEB类的.就可以解决这个问题了.关键就是少包.特别是你的项目原来是SRPING ...
- Jquery Highcharts 参数配置说明
chart: renderTo 图表的页面显示容器 defaultSeriesType 图表的显示类型(line,spline, scatter, splinearea bar,pie,area,co ...
- USACO全部测试数据
链接:http://share.weiyun.com/8c37d26066ee9e63147d2af983f24290 密码:YyGL 请使用2345好压解压.
- Session随便写的(抄书笔记)
会话是web开发中常用的一种对象.会话是存在于服务器端的对象,因此会话超时是保证性能效率的必要手段,本章将学习几种常用的使会话失效的办法.大多数容器都使用cookie作为会话跟踪的基础,但是cooki ...
- 流程引擎的API和服务基础
RepositoryService : 管理和控制 发布包 和 流程定义(包含了一个流程每个环节的结构和行为) 的操作 除此之外,服务可以 查询引擎中的发布包和流程定义. 暂停或激活发布包,对应全部 ...
- scala学习笔记(7):函数(1)
函数是Scala的第一公民! 1 基本定义 scala> def max(x: Int, y: Int): Int = { if (x > y) x else y } 跟着是括号里带有冒 ...
- 获取当前匹配元素 包括自身的html
$(".test").prop("outerHTML"); 来自为知笔记(Wiz)
- 剖析OkHttp缓存机制
现在应用市场上的 App 无一不需要网络操作,这些应用的开发者大多数都选择结合使用 OkHttp 和 Retrofit 来完成网络操作.okHttp 最为人称道的一个特性就是它的缓存机制,而我将在本篇 ...
- 2015年目标一:学习掌握python
俗话说:凡事预则立,不预则废.又到新的一年,给自己确定第一个目标:学习python.掌握python基本用法.其实2014年已经断断续续接触过python,但一直是不系统地在学习,而且基本上没有把py ...