文本和图像函数

  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文本和图像函数的更多相关文章

  1. excel导入sql server 文本被截断,或者一个或多个字符在目标代码页中没有匹配项 错误处理

    excel导入sql server 文本被截断,或者一个或多个字符在目标代码页中没有匹配项 错误处理方法: 方案1:修改注册表 出现文本被截断的原因是SQL Server的导入导出为了确定数据表的字段 ...

  2. Sql Server函数全解<三>数据类型转换函数和文本图像函数

    阅读目录 一:数据类型转换函数 二:文本和图像函数 一:数据类型转换函数 在同时处理不同数据类型的值时,SQL Server一般会自动进行隐士类型转换.对于数据类型相近的值是有效的,比如int和flo ...

  3. Sql Server函数全解(三)数据类型转换函数和文本图像函数

    一:数据类型转换函数 在同时处理不同数据类型的值时,SQL Server一般会自动进行隐士类型转换.对于数据类型相近的值是有效的,比如int和float,但是对于其它数据类型,例如整型和字符类型,隐士 ...

  4. sql server 函数详解(3)数据类型转换函数和文本图像函数

    数据类型转换函数 文本和图像函数 --在同时处理不同数据类型的值时,SQL Server一般会自动进行隐士类型转换.对于数据类型相近的值是有效的,比如int和float,但是对于其它数据类型,例如整型 ...

  5. 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 ...

  6. 用FireDAC获取 SQL SERVER错误文本信息

    SQL SERVER获取错误文本信息,BDE.adoquery一直取不到,FDQuery可以了 Some DBMS, like SQL Server, return messages as an ad ...

  7. Excel 导入 Sql Server出错——“文本被截断,或者一个或多个字符在目标代码页中没有匹配项”错误的解决

    有人说应该先转成Access, 再转到Sql Server. 其实用处并不大, 要截断的还是被截断了. 原因是,SQL Server的导入导出为了确定数据表的字段类型,取excel文件的前8行来判别. ...

  8. Excel导入数据到Sql server 中出错:“文本被截断,或者一个或多个字符在目标代码页中没有匹配项”

    从Excel导入数据到Sql server 时,由于表中的数据有的很长,导入时出现如下错误(如果数据不是很长,255内以内,则不会出现错误): 出错原因: SQL Server的导入导出为了确定数据表 ...

  9. [SQL SERVER] - 数据表 保存 / 查看 海量文本的方法

    背景 WCF + EF + Sql Server 提供服务,包含一个数据上传功能,该方法接收客户端上传的对象列表(多张表单,每个表单包含千余条相关记录). 瓶颈 WCF 默认有文件大小(4M)和超时限 ...

随机推荐

  1. Hbase源码分析:Hbase UI中Requests Per Second的具体含义

    Hbase源码分析:Hbase UI中Requests Per Second的具体含义 让运维加监控,被问到Requests Per Second(见下图)的具体含义是什么?我一时竟回答不上来,虽然大 ...

  2. npm和bower

    npm用于管理node.js 的backend依赖模块:这些模块以node的require来调用 bower用于管理frontend的js依赖模块,这些模块用<script src=" ...

  3. android漂亮的对话框项目sweet-alert-dialog

      漂亮的对话框 sweet-alert-dialog 项目地址: https://github.com/pedant/sweet-alert-dialog android原生的dialog太生硬了, ...

  4. Android利用Http下载文件

    Android利用Http下载文件 一.场景 下载存文本文件和下载如mp3等大容量的文件 界面 二.代码编写 1.AndroidMainfest.xml中配置 主要是解决网络权限和写SDCard的权限 ...

  5. Asp.Net保存session的三种方法

    C#中保存Session的三种方法及Web.Config设置 1.保存session到sql server,需要指定Sql Server服务器,这种方法因为要读写数据库最慢 <sessionSt ...

  6. volley(4) 请求参数:data:[ { bar_remain:XX , bar_code:"XX" , bar_id: XX}], method:GET

    1. 来自于WHCombineBatchFragment.java 2.部分代码 ).).).).port + Url.LABELPRINT + "?data="+strPrint ...

  7. iOS 9的新内容

    https://www.hackingwithswift.com/ios9 Search extensibility Update: I wrote a tutorial on Core Spotli ...

  8. 使用phantomjs生成网站快照

    http://phantomjs.org/ 昨天(2013/08/12)在代码区看到一个生成站点快照的代码,看了半天才发现,作者仅仅贴出来业务代码,最核心的生成快照图片的代码反而没有给出来. 以前记得 ...

  9. 【英语】Bingo口语笔记(37) - 动物的多种表达

    let the cat out of the bag.不在袋子中的猫 指秘密被泄露 dog tired 累成狗 doggy bag  食品袋

  10. OpenLayers调用ArcGIS Server发布的WFS服务

    OpenLayers调用ArcGIS Server发布的WFS服务 原创: 蔡建良 2013-08-20 一. 开发环境 1) Openlayers2.13+arcgis server9.3 2) W ...