编写了n年的T-SQL,一回头,发现这门语言居然缺少很多基本的类型。
1.枚举
虽然枚举看起来就是数字,但是枚举比起数字来说更加好读。mysql有enum,比如billtype(单据类型)把它定义为枚举,从而在编写sql的时候更加方便。
mysql支持枚举案例:
mysql> CREATE TABLE enum_test(
e ENUM('fish', 'apple', 'dog') NOT NULL
);
INSERT INTO enum_test(e) VALUES('fish'), ('dog'), ('apple');
用字符串表达数字,并且和数字的效率一样高,还可以做in操作,虽然不太完美,但是也在完美的路上了。更细节的,如果插入的不在规定范围内,mysql会把它当成null处理,这点不太好。
比如我们常常会遇到这样的代码:
sql = @"select 0 buytotal,-(ifnull(sum(if(bill.vchtype in (34,6,66,28) ...";
如果支持枚举的话,代码应该类似:
sql = Foo(@"select 0 buytotal,-(ifnull(sum(if(dlya.vchtype in (vchtype.billsale,vchtype.billbuy) ...";
感觉就会好很多了。
可是 Sqlserver 只能用int来代替。
2. 布尔类型
无论列定义,还是TSQL变量,参数,都不支持bool类型,智能用bit模拟。显然1/0,不如 true/false 更好阅读和使用。
3. 数组
Sql2008 有表变量的支持,聊胜于无。 数组,多常用的类型!
4. 类(class)
尽管类比一般的类型要复杂的多,可是类依然是类型。sqlserver也是没有这样的类型的。
以我们的产品为例,动则几百个存储过程,这样的复杂度,当然就有了分层和封装的需求。可是sqlserver并不能很好的支持我们的想法。再说定义聚集函数这样的特殊功能,用oracle,就采用sql就可以做到——因为它支持类和包。在sqlserver,mysql要做这样的聚集函数,都必须用dll,麻烦啊。
人的适应能力真强,想起刚刚用php之类的语言,连调试器也没有,用print一路的也过来了。不过毕竟过的不爽。
注:oracle方面的内容都是来自资料,自己并无亲自测试。
分享到:
相关推荐
数据类型是数据的一种属性,表示数据所表示信息的类型。任何一种计算机语言都定义了自己的数据类型。当然,不同的程序语言都具有不同的特点,所定义的数据类型的各类和名称都或多或少...SQLServer提供了25种数据类型:
SQL Server 2008 批量修改字段类型,查询出所有需要修改的字段,然后修改
在SQL Server 2005中使用日期/时间值有时候会很模糊、会觉得很迷茫。因为日期/时间数据类 型同时存储日期和时间值,而这些值的操作并不总是一个简单的过程,或者看起来不简单的。
本资料是一些SQLServer中常用字段类型
C#操作SQL Server中的Image类型数据 C#操作SQL Server中的Image类型数据 C#操作SQL Server中的Image类型数据 C#操作SQL Server中的Image类型数据 详细介绍请参考: ...
SQL Server2005基本方法和语句
易写的从SQL SERVER 中导出image 类型文件到本地
sqlserver数据库类型对应Java中的数据类型
关于SQL Server的基本介绍,操作命令
该ppt详细描述sqlserver索引优化时带来的查询性能提升和更新锁开销,最后介绍表设计,字段数据类型的选择及使用适当的冗余减少表连接
文档记录了SQL Server在存储运用时的语法,需要有一定的SQL语言学习基本,本文档只是做了梳理与总结,以便查看和识记。
SQL SERVER数据类型表 SQL SERVER数据类型表
SQLSERVER数据库中存储BLOB类型数据,在线等现在公司要求用PB6.5+SQLser
SQL server数据类型
sql server 和oracle 中数据类型的区别
SQL Server 2000数据类型SQL Server 2000数据类型
sql server中的image类型的数据导出到oracle的clob字段中
SQL SERVER的数据类型介绍,创建用户定义的数据类型
SqlServer连接工具SqlServer连接工具SqlServer连接工具