Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在SQL 2000中从VARCHAR切换到文本? 在把一组字段从VARCHAR(bigNo)转换成文本?之前,我需要考虑什么?_Sql Server_Tsql_Sql Server 2000 - Fatal编程技术网

Sql server 如何在SQL 2000中从VARCHAR切换到文本? 在把一组字段从VARCHAR(bigNo)转换成文本?之前,我需要考虑什么?

Sql server 如何在SQL 2000中从VARCHAR切换到文本? 在把一组字段从VARCHAR(bigNo)转换成文本?之前,我需要考虑什么?,sql-server,tsql,sql-server-2000,Sql Server,Tsql,Sql Server 2000,除了性能之外,在不久的将来,文本还会被弃用,除了我需要删除并重新创建表以更改列的数据类型这一事实之外 这是针对SQL 2000的--我不能使用VARCHAR(max),VARCHAR(8000)不够大。许多t-SQL字符串函数不能与文本一起使用-它们只能与char/VARCHAR/nchar/nvarchar一起使用。不确定您是否不能仅更改列的数据类型: ALTER TABLE dbo.YourTable ALTER COLUMN YourColumn TEXT 那不管用吗?(不确定这在2

除了性能之外,在不久的将来,文本还会被弃用,除了我需要删除并重新创建表以更改列的数据类型这一事实之外


这是针对SQL 2000的--我不能使用VARCHAR(max),VARCHAR(8000)不够大。

许多t-SQL字符串函数不能与文本一起使用-它们只能与char/VARCHAR/nchar/nvarchar一起使用。

不确定您是否不能仅更改列的数据类型:

ALTER TABLE dbo.YourTable
  ALTER COLUMN YourColumn TEXT
那不管用吗?(不确定这在2000年是否奏效……)

至于要记住的事情:如果需要进行字符串操作,文本数据类型的处理也要麻烦得多,因为大多数(如果不是所有的话)常用的字符串函数(如LEN、SUBSTRING等)都不能处理它。因此,在T-SQL本身中,处理文本列是一个主要的PIA


但除此之外,我相信您应该很好。

您无法搜索字段,因为其中一个字段使用字符串操作函数,而许多查询也无法工作。最好将字段拆分为两个或多个字段。说真的,如果这是唯一的办法,因为升级到SQLServer2008的Express版本可能比现在坚持使用SQLServer2000要好,IMHO。事实上,分割字段也很糟糕。算了吧。我不会这么做,除非我的老板拒绝升级,否则我必须选择哪些字段需要VARCHAR(MAX)和哪些字段需要拆分,哪些字段可以不使用文本作为类型。

至少:

  • 难以操作(如必须使用指针)
  • 比较是一种痛苦(来自devio)

早在古老的SQL Server 6.5时代,我在几个varchar(255)列中存储了一些数据,因为varchar(8000)仅在SQL Server 7中引入。

Hmm,很有趣。我正在查看enterprise manager在更改数据类型后创建的更改脚本。我将测试这个想法。我希望我可以,varchar(max)是一个更优雅的解决方案。但大型政府机构按照自己的步伐行动,我不能催促他们。太真实了,在那里,做到了。遗憾的是,没有一种解决方案可以适用于所有领域。如果某个字段在存储过程中使用,您需要了解它。。。你必须找到这个领域的每一个实例。VisualStudioforDB Pros中的重构工具(以及他们在2010年所称的任何工具)会有所帮助,但我不知道在2000年使用它时会有什么功能。或者,如果你有RedGate的工具,很好,你可以找到那些不能用文本的工具。祝你好运我感到很痛苦。实际上,您无法填充多个varchar(8000)列,因为您将达到8KB的最大行大小。一个8000列将占用8KB的大部分。@MatthewMartin:啊,我在想什么。。。?谢谢并更正了您也无法比较和索引文本列的错误。8k记录大小限制不适用于sql2005+@devio:我们正在讨论关于SQL Server 2000的问题,OP说。否则我们就不会讨论文本/图像