澳门新葡萄京官网首页 3

澳门新葡萄京官网首页SQL Server 存储字符数较大字段的问题

在 MicrosoftSQL Server 的前景版本中将删除 ntext、text 和 image
数据类型。请幸免在新开辟专门的学业中动用这一个数据类型,并假造更正当前选择这个数据类型的应用程序。请改用
nvarchar(max卡塔尔、varchar(max卡塔尔 和 varbinary(maxState of Qatar。

SQL Server
二〇〇三专程提供了拍卖text,ntext,image字段的函数,他们是:
  TEXTPTR
  TEXTVALID
  READTEXT
  UPDATETEXT
  WRITETEXT

一:数据类型调换函数

  在同一时候管理差别数据类型的值时,SQL
Server平时会活动进行隐士类型调换。对于数据类型周围的值是有效的,譬如int和float,不过对于别的数据类型,比如整型和字符类型,隐士转变就不能够落实了,那时必得使用呈现调换。为了兑现这种显示调换,T-SQL提供了八个呈现调换函数,分别是CAST和CONVERT函数。
 CAST(x AS
type卡塔尔国和CONVERT(type,x)函数将一个品种的值转变为另叁个品种的值。
澳门新葡萄京官网首页,eg: select CAST(‘121231′
AS DATE),CAST(100 AS CHAR(3)),CONVERT(TIME,’2012-05-01
12:11:10’)
 能够观望,CAST(‘121231’ AS
DATE卡塔尔将字符串值调换为了呼应的日期值;CAST(100 AS
CHAXC60(3卡塔尔卡塔尔将整数100转移为带有3个展现上升的幅度的字符串类型,结果为字符串”100″;CONVERT(TIME,’二〇一三-05-01
12:11:10’卡塔尔(قطر‎将datetime类型的值,转换为time类型值,结果为”12:11:10.0000000″。

 澳门新葡萄京官网首页 1

用于存款和储蓄大型非 Unicode 字符、Unicode
字符及二进制数据的稳固长度数据类型和可变长度数据类型。Unicode 数据运用
UNICODE UCS-2 字符集。

 

二:文本和图像函数

文本和图像函数用于对文件或图像输入值或字段进行操作,并提供有关该值的焦点音讯。T-SQL中常用的文件含函数有三个,即TEXTPTTiguan函数和TEXTVALID函数。
1.TEXTPTR函数

TEXTPTEvoque(column卡塔尔(قطر‎函数用于重临varbinary格式的text、ntext只怕image字段的公文指针值。查找到的文件指针值可利用于readtext,writetext和updatetext语句。个中参数column是一个数据类型为text、ntext只怕image的字段列。
【例】查询authors表中name字段十七字节文本指针;
 首先制造表authors,
name字段为text类型,T-SQL代码如下:
 create
table authors(id int ,name text);
 insert into authors
values(1,’this is a text’);
使用TEXTPT福特Explorer查询authors表中name字段的十一字节文本指针
 select id,
TEXTPTR(name)from authors where id=1

澳门新葡萄京官网首页 2

2. TEXTVALID函数

  TEXTVALID(‘table.column’,text_ptr卡塔尔(قطر‎函数用于检查一定文本指针是不是为使得的text、ntext或image函数。table.column为钦命数据表和字段,text_ptr为要反省的文书指针。
【例】检查是还是不是存在用于authors表中decription字段中的种种值的可行文本指针。
  select
id,’this is a text’ = TEXTVALID((‘authors.name’),TEXTPTR(name)) from
authors;
 第三个1为id的值,第4个1象征查询的值存在.

 澳门新葡萄京官网首页 3  

贰个事实上中国人民解放军海军事工业程高校业作中的例子:

 

1 DECLARE @ptrval varbinary(16)2 SELECT @ptrval = TEXTPTR(f006l_0046)
3 FROM TB_TEXT_0046 where ob_textid_0046=’36239710’4 READTEXT
TB_TEXT_0046.f006l_0046 @ptrval 0 32955 GO

诚如意义方法

在询问解析器,或然集团微处理器中我们看那么些品种的多少时,平日状态下是看不到大概见到不完的数据的。实际在T-SQL中持有一个ReadText函数能够成功此干活,若不驾驭要当前列的长度时,三个很傻的诀假如足以设定三个十分大的,然后,推行之,将现出谬误提醒,在错误提示中能够看看最大值。

写字段WRITETEXT :

DECLARE @val varbinary(16)
  SELECT @val = TEXTPTR(字段名) FROM 表名 where 条件
  W库罗德ITETEXT 表名.字段名 @val
‘您的长字符串,平常都是高于8000的,不超过也行’

证实:第二行加上条件 可以牢固当前操作的是哪一条记下。

以下这一个文字摘自Ms SQL二〇〇四的联合丛书。

修改字段UPDATETEXT:

DECLARE @val varbinary(16)
SELECT @val = TEXTPTR(字段名) FROM 表名 where 条件
UPDATETEXT 表名.字段名 @val 0 NULL
‘您的长字符串,平常都以高于8000的,不高于也行’
–表明:第二行加上条件
能够牢固当前操作的是哪一条记下,第三条里的0是说那么些字段里从第0个字符起先,NULL表示,从0起先到那么些字段最终的有所字符删掉

READTEXT读取 text、ntext 或 image 列中的 text、ntext 或 image
值,从钦命的偏移量开端读取内定的字节数。

读字段READTEXT:

DECLARE @val varbinary(16)
SELECT @val = TEXTPTR(字段名) FROM 表名 where 条件
READTEXT 表名.字段名 @val 0 40000
–表明:第二行加上条件
能够牢固当前操作的是哪一条记下,第三行后多个参数意为:从第0个字符开首,读40000个字符。
–您能够认为这几个函数完全没哈用场,是啊,小编就认为他没用,读取嘛,怎么读都能够读出来,所以一向读就足以了。

 

语法READTEXT { table.column text_ptr offset size } [ HOLDLOCK ]

说明

参数table.column

UPDATETEXT

更新现存 text、ntext 或 image 字段。使用 UPDATETEXT 在合适的地点变动
text、ntext 或 image 列的一有些。使用 W奥迪Q5ITETEXT 来更新和替换整个
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 数据的文本指针的值(由 TEXTPTENVISION函数再次来到)。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? 2003中被忽视。在该版本中,日志记录由数据库的得力苏醒模型决定。

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 列的公文指针值(由 TEXTPTOdyssey函数重临)。

 

是从当中读取的表和列的称呼。表名和列名必需符合标记符的规行矩步。必得钦定表名和列名,可是能够筛选是不是钦命数据库教程名称和全数者名称。

WRITETEXT

允许对现成的 text、ntext 或 image
列举办无日志记录的人机联作式更新。该语句将根本重写受其震慑的列中的任何现存数量。W奥迪Q7ITETEXT
语句不可能用在视图中的 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? 二〇〇四中忽视。日志记录由数据库的实在恢复模型决定。

data

要存款和储蓄的其实 text、ntext 或 image 数据。data
能够是字面值,也足以是变量。对于 text、ntext 和 image 数据,能够用
WXC60ITETEXT 人机联作插入的公文的最大尺寸大致是 120 KB。

 

 

 

 

 

text_ptr

平价文本指针。text_ptr 必须是 binary(16)。

offset

始发读取 text、image 或 ntext 数据以前跳过的字节数或字符数。使用 ntext
数据类型时,offset 是在开班读取数据前跳过的字符数。使用 text 或 image
数据类型时,offset 是在开始读取数据前跳过的字节数。

size

是要读取数据的字节数或字符数。要是 size 是 0,则象征读取了 4 KB
字节的数额。

HOLDLOCK

使文本值一向锁定到业务结束。别的客商能够读取该值,可是不能对其开展改革。

表明使用 TEXTPTENCORE 函数得到有效的 text_ptr 值。假使回去不只有一行,TEXTPTENCORE将重回指向钦命行中的 text、ntext 或 image
列的指针,或重返指向查询所再次回到的末段一行中的 text、ntext 或 image
列的指针。由于 TEXTPT揽胜极光 重临 16
字节的二进制字符串,所以最佳声多美滋个操纵文件指针的有的变量,然后在
READTEXT 中选取该变量。有关申明局地变量的更加多音信,请参见
@MSITStore:C:Program%20FilesMicrosoft%20SQL%20Server80ToolsBookstsqlref.chm::/ts_de-dz_66w5.htm。

在 SQL Server 二零零二 中可能存在无效的文件指针。有关 text in row
选项的更加的多新闻,请参见
sp_tableoption。有关如何使文本指针无效的愈来愈多新闻,请参见
sp_invalidate_textptr。

只要 @@TEXTSIZE 函数的值小于为 READTEXT 钦定的分寸,它将替代为 READTEXT
钦定的尺寸。@@TEXTSIZE 函数是对由 SET TEXTSIZE
语句设置的归来数据字节数的约束。有关怎么样设置 TEXTSIZE
会话设置的越来越多音信,请参见 SET TEXTSIZE。

权限READTEXT 权限暗中同意授予对点名的表具备 SELECT
权限的顾客。那个权限可在传递 SELECT 权限制时间传递。

示范下例读取 pub_info 表中 pr_info 列的第 2 个至第 26 个字符。

USE pubsGODECLARE @ptrval varbinary(16)SELECT @ptrval =
TEXTPTR(pr_info)FROM pub_info pr INNER JOIN publishers pON
pr.pub_id = p.pub_idAND p.pub_name = ‘New Moon Books’READTEXT
pub_info.pr_info @ptrval 1 25GO

ntext长度可变的 Unicode 数据,最大尺寸为 2^30 – 1 (1,073,741,823卡塔尔国个字符。存款和储蓄大小是所输入字符个数的两倍。ntext 的 ISO 同义词为 national
text。

text服务器代码页中长度可变的非 Unicode 数据,最大尺寸为 2^31-1
(2,147,483,647卡塔尔 个字符。当服务器代码页使用双字节字符时,存款和储蓄仍然是2,147,483,647 字节。遵照字符串,存储大小只怕低于 2,147,483,647 字节。

image长度可变的二进制数据,从 0 到 2^31-1 (2,147,483,647卡塔尔 个字节。

注释——————————————————————————–

以下函数和语句可与 ntext、text 或 image 数据一同利用。

发表评论

电子邮件地址不会被公开。 必填项已用*标注