我将在SQL Server的nvarchar(MAX)字段中存储故事,但我知道这些故事会比MAX允许的长度要长得多,那么我应该采取什么方法呢?是否应该将故事分成多行或者跳过使用数据库而使用文本文件呢?
我将在SQL Server的nvarchar(MAX)字段中存储故事,但我知道这些故事会比MAX允许的长度要长得多,那么我应该采取什么方法呢?是否应该将故事分成多行或者跳过使用数据库而使用文本文件呢?
nvarchar(n)
是一种数据类型,其中n
可以是1-4000的数字。在这种情况下,数字n
最大为4000,这相当于8000个字节(每个字符2个字节)。
nvarchar(MAX)
则完全是不同的数据类型——关键词MAX
是一个文字,它并不是我上面例子中n
的任何潜在值的同义词。这种类型的字段最大长度为2^31-1个字符,超过10亿个字符,相当于超过20亿个字节(每个字符2个字节)。varchar(n)
和varchar(MAX)
也适用同样的原则,只是每个字符可能只有1个字节,这样可以存储的字符数量加倍。是否只有1个字节取决于排序规则,正如Martin Smith在评论中指出的!NTEXT
相关,而不是 nvarchar(n)
。并且进一步使用关键字 MAX
似乎会导致人们认为 MAX
是一个同义词,意思是“在此处使用最大数值”。 - Andrew BarberMAX
似乎是某种同义词。我认为他们最好坚持使用一个完全独立的名称来替换NTEXT
/TEXT
的功能。但是,这可能会违反SQL标准...(我现在在笑...) - Andrew Barber把它们存储在章节中。
这并不是技术问题 - 拥有10亿个nvarchar字符的故事几乎是不可能的(而nvarchar(max)是“新”的TEXT数据类型)。
但是,加载和处理它们将会很痛苦。
将它们存储为章节,并在有意义的时候为每个章节存储起始/结束页码,以便您可以更轻松地导航。
顺便说一句,您发布了您认为它是800个字符 - 这从来没有发生过。如果适用,限制将为8000字节 - 并且那将是4000个字符的Unicode。
好的,你可以尝试使用LONGTEXT(Mysql)或TEXT(MSSQL)进行存储(如果你想要存储对象,我认为你可以使用BLOB)数据类型?
sql-server
,所以 LONGTEXT
不适用。自 SQL 2005 起,TEXT
已被弃用。nvarchar(MAX)
是正确的数据类型。 - Andrew Barber
nvarchar(max)
允许的字符数量更多,那是10亿个字符。《战争与和平》只有56万个单词。 - Martin Smith