varchar(max) MS SQL Server 2000,有问题吗?
-
09-09-2019 - |
题
我继承了一个asp.net 网站项目,当前运行SQL Server 2000 作为其后端。
我一直在使用 SQL Server 2005 Express 对数据库的本地副本进行一些数据库更改。我已经使用创建了一个表 varchar(max)
列。它们用于存储任意长度的 XHTML 片段。
在 stackoverflow 上浏览时,我发现了这个:始终使用 nvarchar(MAX) 有什么缺点吗?
用户 mattruma 说他发现了使用的“困难方法” varchar(max)
在 SQL Server 2000 上。
我应该用什么来代替 varchar(max)
鉴于实时数据库在 SQL Server 2000 上运行?
预先感谢您的任何帮助!
解决方案
听起来像是 varchar(MAX)
如果您的实时数据库是不支持这些限制的 SQL Server 2000,那么这些限制就没有实际意义了。如果您要存储超过 8K 的字符,您几乎只剩下唯一的其他选择,即 TEXT
柱子。但是,请注意 TEXT
列也有很多限制。
例如,您无法轻松地对它们进行排序或分组,也无法将它们与其他列进行比较。那就是你不能说 Select * from mytable where Mytext1 = mytext2
.
其他相关问题:
- 我建议使用
NText
或者NVarchar
无论你采用哪种方式,列都支持 Unicode。 - 如果表有很多其他列并且
varchar(8000)
列可能经常接近满,您可能会遇到 8K 行限制的问题。也请记住这一点。
其他提示
VARCHAR(Max)
在SQL Server 2005中引入的,并不会SQL Server 2000中,您需要为使用VARCHAR(8000)
假设,这将是足够大的工作。否则,你将需要使用TEXT
修改强>
此外,如果您切换到VARCHAR(8000)
记住有一个单行不能有更多然后8060个字节的限制。所以,如果你填写一份表格varchar(8000)
并有一大堆其他大柱,你会得到一个错误。这是Text
用武之地。
Text
具有性能含义,因为默认情况下它被存储在一个单独的位置,并且它们保持一个指针在表中。有这么文本类型保存在表中,直到他们达到一定的规模,其改变此行为的设置选项。如果你有大多是小斑点你可能要启用这个功能。
使用一个TEXT列。
这要看你的需求。您可以使用文本列而不是VARCHAR(MAX),但你必须确保你的实现并不需要在该领域的搜索,因为你不能做到像文本和NTEXT领域的比较。
如果你可以限制自己8000个字符,我会用VARCHAR(8000)列来存储信息。