SQL Server2005数据类型最大值

事情开始得很简单。MegaWare公司市场部门想要一个新的网站来发布文档,开发团队觉得使用SQL Server 2000数据库作为文档存储仓库会使事情变得简单。Steve是MegaWare的数据库管理员,没有看出这有什么大问题;在数据库中存储文档,而不是使用文件系统,意味着服务器需要多做一些工作,但是它也会使得备份和管理容易得多。数据库与文件系统变得不同步也应该是不可能的。

市场部门想要存储的许多文档都超过了8000个字节,那么很明显VARCHAR不是适合这项工作的数据类型。作为替代,TEXT数据类型被用来定义存放数据的字段。因为每个TEXT都能容纳2GB的内容,TEXT要存放市场部门的同事们扔进数据库的最大的文件也是没有问题的。

数月过去了,市场用大量的无聊拷贝填满了整个数据库。但是这还不是Steve真正关心的问题。数据库愉快地嗡嗡作响地运转着,每个人对项目的结果都很满意。

直到公司的标语改变的那个重大的日子。市场部的团队认为“MegaWare: It's really cool!”要比原来的“It's MegaWare's Way or the Highway!” 听起来更好。因为市场部团队已经将原来的标语嵌入了仓库中每个文档的页脚上,现在Steve的工作就是更改所有这些文档的页脚。

“没有问题,” Steve想,打开SQL Server 查询分析器工具,执行了如下的T-SQL批处理:

UPDATE MarketingDocuments

SET Document =

REPLACE(Document,

'It''s MegaWare''s Way or the Highway!',

'MegaWare: It''s really cool!)

当他看到出现的错误消息的时候,Steve的轻松的微笑很快消失了,“替换函数的参数1,text数据类型无效。”

替换函数在编写出来的时候,就对TEXT数据类型不起作用。同样也对CHARINDEX或者SUBSTRING不起作用——或者至少是他们在超过8千个字符的情况下不起作用。更进一步地讲,开发人员忘了处理TEXT或者IMAGE类型的本地变量;实际上不支持任何操作。即使是简单地更新一个文档中的一个子字符串都需要用到晦涩的东西,以及难以使用的类似READTEXT和WRITETEXT的函数。而不是开发人员或者忙碌的数据库管理员因为想要弄清如何正确使用而采用了不同类型的函数消耗了时间。

SQL Server的开发人员很幸运,他们将会拨开乌云见蓝天。SQL Server 2005引入了一系列新的被称为MAX的数据类型。这是VARCHAR,NVARCHAR和VARBINARY类型的扩展,这几种类型以前被限制在8000字节以下。MAX可以容纳高达2GB的数据,与TEXT和IMAGE一样——并且完全兼容所有的SQL Server内置的字符串函数。

用MAX关键字定义一个某种MAX类型的变量与替代字符串的尺寸(为VARCHAR/NVARCHAR的时候)或者字节(为VARBINARY的时候)一样简单。

DECLARE @BigString VARCHAR(MAX)

SET @BigString = 'abc'

时间: 2024-09-11 19:08:39

SQL Server2005数据类型最大值的相关文章

SQL Server 2005关于数据类型最大值

本文是SQL Server 2005关于数据类型最大值问题的解决办法的实例. 事情开始得很简单.MegaWare公司市场部门想要一个新的网站来发布文档,开发团队觉得使用SQL Server 2000数据库作为文档存储仓库会使事情变得简单.Steve是MegaWare的数据库管理员,没有看出这有什么大问题;在数据库中存储文档,而不是使用文件系统,意味着服务器需要多做一些工作,但是它也会使得备份和管理容易得多.数据库与文件系统变得不同步也应该是不可能的. 市场部门想要存储的许多文档都超过了8000个

SQL Server2005 新数据类型XML

在SQL Server2005中继续延续了微软在.Net中的设计思想 将XML和.Net紧密地结合到其中.用.Net在Sql2005中写存储过程定义函数我还没有研究过,今天就只简单得谈谈XML在SQL2005中的应用. 相对SQLServer2000而言,2005在数据类型上最大的一点改变就是增加了XML这个数据类型.要把这个东西搞懂先就必须要懂XML. 在数据库中xml的定义和使用和一般的数据类型没有多大差别,比如: 创建表: create table xmltable(id int prim

SQL Server2005打开数据表中的XML内容时报错的解决办法_mssql2005

从SQL Server2005开始提供了一种新的数据类型XML type,它允许用户将数据以XML文件的格式直接存储到数据表中.结合在ASP.NET中使用Linq to Sql,我们可以非常方便地将XML文件存储到SQL Server数据库中.但是在默认情况下,如果你存储的XML文件比较大(超过2MB),在SQL Server管理器中不能直接点击查看XML内容而报以下错误提示: 如何解决该问题呢?很简单,其实错误提示中已经描述地很清楚了,在SQL Server Management Studio

[转载]利用SQL SERVER2005发送邮件

原文:http://sqlserver2005.itpub.net/post/22359/210413 早在sql server 2000中可以通过sql mail给指定的邮件地址发邮件.SQL SERVER 2005中我们仍外可以用sql server2000中的SQLMAIl功能 发送邮件,但SQL SERVER2005中又提供一个新数据库邮件功能也可以发送和接收邮件.这里以数据库邮件为例进行说明. 为了安全起见,微软将数据中的一些可能带来安全隐患的一些功能组件禁用掉了,数据库邮件和SQL

完美解决SQL server2005中插入汉字变成问号的问题_MsSql

关于SQL server2005中插入汉字变成问号的解决办法 1.右击你所建的数据库,点击"属性",选择"选项"并点击.将其中的排序规则设置为:Chinese_PRC_CI_AS(选择下拉列表框即可设置),然后"确定". 2.在表中将你的汉字字段的数据类型设置为nvarchar型或ntext型,设置前最好先将表中的数据全部删除.(不要使用varchar或text型,因为它们只会继续使你的数据乱码). 3.设置好后,关闭服务器,再重新启动,就可生效

SQL Server2005杂谈(2):公用表表达式(CTE)的递归调用

本文为原创,如需转载,请注明作者和出处,谢谢! 上一篇:SQL Server2005杂谈(1):使用公用表表达式(CTE)简化嵌套SQL 先看如下一个数据表(t_tree):     上图显示了一个表中的数据,这个表有三个字段:id.node_name.parent_id.实际上,这个表中保存了一个树型结构,分三层:省.市.区.其中id表示当前省.市或区的id号.node_name表示名称.parent_id表示节点的父节点的id.     现在有一个需求,要查询出某个省下面的所有市和区(查询结

SQL Server2005杂谈(3):公用表表达式(CTE)的递归调用

 本文为原创,如需转载,请注明作者和出处,谢谢! 先看如下一个数据表(t_tree):     上图显示了一个表中的数据,这个表有三个字段:id.node_name.parent_id.实际上,这个表中保存了一个树型结构,分三层:省.市.区.其中id表示当前省.市或区的id号.node_name表示名称.parent_id表示节点的父节点的id.     现在有一个需求,要查询出某个省下面的所有市和区(查询结果包含省).如果只使用SQL语句来实现,需要使用到游标.临时表等技术.但在SQL Ser

SQL SERVER2005建Link Server

转自http://allanpie.blog.163.com/blog/static/2132041020091902648766/ SQL SERVER2005建Link Server   SQL Server2005中的link server类似于Oracle里面的DB Link , 透过link server可以访问另一个数据库中的对象 , 这些Link Server可以是SQL Server , 也可以是Oracle等其他类型的数据库, 建好Link Server后就可以象操作当前数据库

完美解决SQL server2005中插入汉字变成问号的问题

关于SQL server2005中插入汉字变成问号的解决办法 1.右击你所建的数据库,点击"属性",选择"选项"并点击.将其中的排序规则设置为:Chinese_PRC_CI_AS(选择下拉列表框即可设置),然后"确定". 2.在表中将你的汉字字段的数据类型设置为nvarchar型或ntext型,设置前最好先将表中的数据全部删除.(不要使用varchar或text型,因为它们只会继续使你的数据乱码). 3.设置好后,关闭服务器,再重新启动,就可生效