存储文章内容,实际应用中,用什么类型的字段?

时间:2022-02-18 21:22:02
对于SQLSERVER来说,做程序测试的话,字段选择是无所谓的事情。
但真正投入运作真刀真枪的时候,什么样的数据选择什么样的字段类型我想啊,应该是很重要的。
我想请教各位仁兄一下,一个小型的文章系统的网站,用来存储内容content的字段,我选择的是varchar(8000),最多可容纳4000汉字,对绝大多数用户来说,应该够用了。但是一个问题是允许用户输入代码(HTML,JS,CSS等),实际上如果存储代码的话,我测试了多回,总是莫名其妙的出现许多问题,远远不会达到8000的理论容量,一般达到4000左右就报错了,说什么不允许类型ntext到varchar的隐式转换,这实际不是什么数据类型的问题,比方说,报了错,你把内容减一半下来,存进了,然后把减下来的那一半又存,一样正常存进去,总不会因为你把六七千字节的内容分成两次存,数据类型就会改变啊?(这个问题总让我郁闷,也不知各位是不是遇到过,也不知是不是我的版本有问题,我的版本是SQLSERVER2000个人版)。
    这问题我发贴请教过,但都没有满意答案,有朋友建议说把字段改成text,我也拿不定主意是不是应该改为text,问题是文章内容还要支持站内搜索的模糊查询,比方说,用户输入关键字“国际问题”,那么搜索的时候就得把内容中包含该关键字的文章给搜出来。我知道varchar是支持索引的,但不知道text支不支持索引,如果支持,可能效率也不好。
    在这里请大家提点建议吧,谈谈你们的实践经验,你们在实际使用中是选择什么类型的字段啊?

5 个解决方案

#1


用TEXT保存,采用全文索引搜索

#2


nvarchar,text不太灵光

#3


我用的是image型,因为文站不一定就是纯文本,在OA中,通常是储存word文件,因此,用image比较理想,通过FileRead将文件读到内存中的byte[]中,然后保存起来,使用时,将byte[]内容用相同的扩展名下载到本地,再打开,储存byte[]的用image字段。

#4


nvarchar才能到8000,varchar只能到4000

#5


引用 4 楼 yaojian2002 的回复:
nvarchar才能到8000,varchar只能到4000
????

nvarchar才能到4000,varchar只能到8000

可以参考 varchar(max)类型

#1


用TEXT保存,采用全文索引搜索

#2


nvarchar,text不太灵光

#3


我用的是image型,因为文站不一定就是纯文本,在OA中,通常是储存word文件,因此,用image比较理想,通过FileRead将文件读到内存中的byte[]中,然后保存起来,使用时,将byte[]内容用相同的扩展名下载到本地,再打开,储存byte[]的用image字段。

#4


nvarchar才能到8000,varchar只能到4000

#5


引用 4 楼 yaojian2002 的回复:
nvarchar才能到8000,varchar只能到4000
????

nvarchar才能到4000,varchar只能到8000

可以参考 varchar(max)类型