SQL存储字符串

时间:2009-04-27 15:28:38

标签: sql sql-server tsql

我需要在数据库中保存字符串。每个字符串的大小从1到N不等。我认为这个限制大约是10000,甚至更多。 nvarchar(MAX)将是解决此问题的最佳方法吗?

2 个答案:

答案 0 :(得分:4)

SQL Server 2005及更高版本中,NVARCHAR(MAX)是存储长度超过4000个字符的字符串的最佳方式。

这是SQL Server 2005及更高版本推荐的唯一方法,但它仍然支持TEXT列以实现向后兼容。

请注意,您无法在NVARCHAR(MAX)列上创建索引。

要使用索引,请创建计算列并在索引搜索中使用它。它可以作为一个有效的粗滤器:

CREATE TABLE foo (id INT NOT NULL, mytext NVARCHAR(MAX) NOT NULL, mytext_index AS CAST(mytext AS NVARCHAR(450))

CREATE INDEX ix_foo_mytext (mytext_index)

SELECT  *
FROM    mytext
WHERE   mytext_index LIKE 'L%'

答案 1 :(得分:1)

nvarchar如果是unicode(或其他非7位或8位字符串)则是正确的。如果它们是例如ASCII latin-1文本(在许多情况下足够),则varchar(MAX)将节省空间。