zoukankan      html  css  js  c++  java
  • sql server中使用nvarchar(MAX)代替ntext

    两个字段目前来说存储的数据没什么大区别但是nvarchar(MAX)类型查询的时候方便一些,ntext查询的时候还得转换类型。

    比如:

    ntex类型:select * from 表 where convert(nvarchar(MAX),InfoContent) !=''

    nvarchar(MAX)类型:select * from 表 where InfoContent !=''

    NTEXT:

    默认情况下,NTEXT将文本数据存储在LOB结构中, 在表结构中只存储指针,指针指向该数据在LOB中的存储位置。

    NVARCHAR(MAX)

    默认情况下,不超过8,000字节的数据直接存储在表结构中,超过的才和NTEXT一样将数据存储在LOB结构中。

    NTEXT向NVARCHAR(MAX)的转换:

    ALTER TABLE 表名 ALTER COLUMN 字段名 NVARCHAR(MAX) null

    执行上面的SQL语句之后,虽然完成了转换,但数据的存储结构并没有改变,还是按照NTEXT的默认存储方式存储在LOB中。

    如何实现转换后数据按NVARCHAR(MAX)的方式进行存储呢?只需执行下面的语句:

    UPDATE 表名 SET 字段名 = 字段名

    比如:表名是Comment,字段名是Content,SQL语句就是: UPDATE Comment SET Content = Content

    实测数据:100条数据,耗时706秒。 

    NTEXT将在以后版本的SQL SERVER中不被支持,微软的文档中建议用NVARCHAR(MAX)取代NTEXT。

    ntext, text, and image data types will be removed in a future version of Microsoft SQL Server. Avoid using these data types in new development work, and plan to modify applications that currently use them. Use nvarchar(max), varchar(max), and varbinary(max) instead. 

    意思就是:

      Microsoft SQL Server 的未来版本中,将删除 ntext、 文本和 image 数据类型。 请避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。 使用 nvarchar (max)、 varchar (max) 和 varbinary (max) 来代替。

  • 相关阅读:
    codevs 1576 最长严格上升子序列
    codevs 3415 最小和
    codevs 2102 石子归并 2
    洛谷 P1040 加分二叉树
    BZOJ 3038 上帝造题的七分钟二
    codevs 线段树练习ⅠⅡⅢ
    启动Tomcat提示:指定的服务未安装
    poj 1061 青蛙的约会 (扩展欧几里得模板)
    POJ 3449 Geometric Shapes(判断几个不同图形的相交,线段相交判断)
    HDU 5251 矩形面积(二维凸包旋转卡壳最小矩形覆盖问题) --2015年百度之星程序设计大赛
  • 原文地址:https://www.cnblogs.com/cuihongyu3503319/p/12581547.html
Copyright © 2011-2022 走看看