winform中怎么把查询单饿所有的数据放在datatable中_数据库即将被淘汰的几种数据类型,烦恼还是解脱?...

朋友们,关系型数据库已经有几十年的发展历史了。我们所熟知的Oracle、SQL Server、PostgreSQL、MySQL等主流数据库,都支持非常丰富的数据类型。有些数据类型出现的比较早,后续发展中因存在缺陷,列入被逐步淘汰序列

即将淘汰的数据类型及替代类型

ef9c57ef51423c8950e01ca4762f8aea.png

比如在SQL Server 2000及之前,我们要处理大文本或二进制数据,要用到text、ntext和image字段。用过的朋友都知道,这些字段虽然可以存储大值数据,但用起来却非常麻烦。比如我们把字符串放在text字段中,处理时还需要使用专用函数,效率也比较低,给我们工作带来很多不便。

从SQL Server 2005开始,引入了max说明符,max扩展了三种数据类型,用来替换原来的text、ntext和image字段,它们分别是varchar(max)、nvarchar(max)和varbinary(max)字段。这些大值数据类型可以存储最大为 2^31-1 个字节的数据

原数据类型与新类型对应关系为:

text->varchar(max)

ntext->nvarchar(max)

image->varbinary(max)

95d76d3e4432297ee7d100cef3095ff4.png

用过varchar类型的朋友,您一定会觉处理起来非常得心应手,varchar结构简单,而且有丰富的字符串函数支持,你想做的基本没有做不到的。而varchar(max)用法与varchar一样,您终于可以放心抛弃令人讨厌的text类型了。

旧类型到新类型的转换方式

如果您原来用的字段类型是text,要提换成varchar(max)非常简单,直接使用:

cast(text类型 as varchar(max))

即可,同理,如果您原来使用的字段类型是ntext,要替换成nvarchar(max)也非常简单,可使用:

cast(ntext类型 as nvarchar(max))

即可,image类型转varbinary(max)也是同理,使用:

cast(image类型 as varbinary(max))

即可。这种转换非常关键,特别是在您准备升级数据库、更改字段数据类型时。

4a6f1b614fed6f6b6cdc0f10896979e4.png

怎么样,是不是感觉很简单,而且还有更诱人的呢:varbinary(max)可以转换为varchar(max),您只需要使用:

cast(varbinary(max) as varchar(max))

即可。至此,三种旧类型和三种新类型之间所有的转换,我们都全部打通了!

了解了以上的转换关系,我们要做数据类型之间的转换,就非常简单了。

下面我们做一下实战。如果您准备以后升级数据库、更换字段类型,您一定要掌握各种类型之间的转换技巧!

数据类型转换实战

简单的转换我们就不说了,直接上一个难点儿的,比如从image转为varchar(max)应该如何处理呢?

当然,直接从image转varchar(max)肯定是行不通的,我们必须首先将image转为varbinary(max),再从varbinary(max)转为varchar(max)。

为了方便演示,我们创建一个简单的表变量,脚本如下:

declare @data table( FSerial int identity(1,1), FData image);insert into @data(FData)values('向3月31日凉山木里火灾牺牲的英雄致敬!');

运行效果如下图所示:

b6729b47ff4045b75b7a2064510a7ab4.png

要将image类型转换为text,我们需要这样写:

select cast(cast(FData as varbinary(max)) as varchar(max)) from @data;

先将FData字段从image转为varbinary(max)、再一次转换为varchar(max)即可,运行效果如下图所示:

0c5833cfd7a2ce5e5d5c0d6c5188fb07.png

如果您要升级数据库、更换字段类型,直接在管理器中设计修改就行了。但只能对照替换关系修改,即text->varchar(max)、ntext->nvarchar(max)、image->varbinary(max),管理器会自动把数据进行转换。

如果您不放心,可以使用新类型创建新表,把转换后的数据写SQL导进去,检测无误后删除旧表,再修改新表名称为旧表名称即可。

如果要转换的字段不多,您可以在原表上增加新类型的字段,写SQL将旧字段转换类型后更新到新字段,检测无误后删除旧字段,再将新表名称改回旧表名称即可

希望对您有所帮助!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值