`
1000copy
  • 浏览: 74426 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

Sqlserver 缺乏很多基本类型

阅读更多


 

编写了n年的T-SQL,一回头,发现这门语言居然缺少很多基本的类型。

 

 1.枚举


虽然枚举看起来就是数字,但是枚举比起数字来说更加好读mysqlenum,比如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就可以做到——因为它支持类和包。sqlservermysql要做这样的聚集函数,都必须用dll,麻烦啊

 

人的适应能力真强,想起刚刚用php之类的语言,连调试器也没有,用print一路的也过来了。不过毕竟过的不爽。

 

注:oracle方面的内容都是来自资料,自己并无亲自测试。

1
0
分享到:
评论

相关推荐

    BSQL.rar_eventuallynoc_oracle_sql数据库

    为了更深入地了解和使用BSQL,用户可能需要阅读其帮助文档,学习如何连接到不同类型的数据库,如何编写有效的SQL查询,以及如何利用可能的“eventuallynoc”功能。同时,对SQL语法的熟悉将极大地提高使用效率。

    SQL注入漏洞全接触--入门篇

    - 由于user字段通常不存在于非SQL Server的数据库中,因此如果该请求能够成功执行,那么很可能是SQL Server数据库。 - 进一步测试表的存在性: ``` http://www.19cn.com/showdetail.asp?id=49and(selectcount(*)...

    SQL模糊查询的运用分析.pdf

    但在SQL Server中,无论中英文字符均使用一个下划线表示。因此,在进行跨数据库平台的模糊查询时,需要特别注意这些差异。 其次,文章分析了查询条件与数据类型的关联性问题。通过一个具体案例,说明了定长字符串...

    学生数据库设计存在的主要问题及解决方法

    1. **理解不足**:很多学生对数据库设计的基本概念理解不够深入,例如实体关系(ER)模型、规范化理论等。 2. **设计不合理**:常见的设计问题包括表结构设计不合理、字段类型选择不当、索引使用不恰当等。 3. **...

    东北大学20春《数据库技术》在线平时作业3答案.docx

    - **整型数据类型**:SQLServer支持多种整型数据类型,包括int、smallint、tinyint等。 - **选项分析**:正确答案为**B. int、smallint和tinyint**。 #### 二十、SQL的GRANT语句 **知识点解析**: - **GRANT语句**...

    数据库培训2023-03-18.zip

    8. 数据库云服务:随着云计算的发展,很多数据库现在提供云服务,如Amazon RDS、Google Cloud SQL、Azure SQL Database等。培训可能涵盖如何在云端部署和管理数据库,以及云数据库的优势和挑战。 9. 实战演练:理论...

    设备管理系统设计分析实现开题报告(张凯).doc

    当前,我国的设备自动化管理水平相对较低,很多企业仍采用传统的设备管理方式,如简单的设备档案登记,缺乏动态跟踪和实时更新。本系统借鉴国际先进的设备管理理念,结合我国实际,旨在提供一个灵活且通用的设备管理...

    C#开发实战(10-21章).pdf

    6. 数据访问技术:涉及***、Entity Framework等数据访问技术,以及SQL Server等数据库的连接与操作。 7. Web开发技术:涵盖*** Web表单、MVC(模型-视图-控制器)架构模式以及Web API的使用。 8. 新技术应用:探讨...

    基于ASP的DJ电台超强采集 v1.0.zip

    【压缩包子文件的文件名称列表】中的唯一文件名"132684350929674131"无法直接提供具体信息,但它很可能代表一个或多个程序文件,比如源代码文件、数据库配置文件、执行文件或者是文档文件。通常,ASP项目会包含如下...

    LabelMatrix条码生成软件(英文)

    3. **实践操作**:很多软件通过实践操作可以逐渐掌握,尝试使用各个功能,多做几次设计和打印,会慢慢习惯英文界面。 4. **请求本地化**:如果需求强烈,可以联系LabelMatrix的开发商,表达对中文版的需求,也许...

    vb客房管理系统

    由于其简洁的界面和基本的功能集,它对初学者来说是一个很好的学习平台,可以理解基础的数据库操作和用户交互设计。 VB客房管理系统的核心功能包括: 1. **客房状态管理**:系统能实时更新客房的占用情况,如空闲...

    Database数据库

    尽管搜索和查询在很多情况下都被用来描述数据检索的过程,但两者之间存在一定的差异: - **搜索**:通常指的是基于关键词的搜索,比如在搜索引擎中输入演员名字查找其是否捐赠过政治候选人。 - **查询**:则是更...

    VB人力资源管理系统课程设计报告

    - 后端数据库选择Microsoft SQL Server,因其易于使用、维护且成本较低。 - **系统功能结构**: - **公用模块**:包含系统的基础功能,如登录验证、权限管理等。 - **系统登录模块**:负责用户的登录验证。 - **...

    数据库设计

    - **急功近利的心态**:很多开发者急于编码,忽视了前期的数据库设计工作。 - **设计不当**:即使有了设计,也可能因考虑不周而造成数据一致性、完整性和性能等方面的问题。 #### 二、不良数据库设计导致的问题 **...

    测试培训教材

    安装好SQL Server 2000后注意启动SQLServer服务器 3、安装QC9.0 服务器名称也可以是IP地址 4、启动QC9.0 5、QC9.0安装问题解决 - JBOSS启动不...

    数据库综述

    - **SQL Server** - **PostgreSQL** - **MySQL** - **Access数据库** - **SQLite** - **FoxPro数据库** - **INFOBANK数据库** 以上数据库涵盖了不同类型的数据库系统,从企业级应用到小型应用都有覆盖。 #### ...

    企业信息系统整合方案

    由于现有的信息系统中可能使用了多种数据库类型(如Oracle、Sybase、SQL Server等),这就带来了数据格式不一的问题。此外,随着企业内部信息化统一需求的增长以及与外部电子商务的融合,还会产生跨数据库的数据交换...

    基于VB的图书借阅管理系统.docx

    - **管理考虑不足**:很多软件仍然沿用传统的管理模式,缺乏对企业内外部环境变化的应对机制。 - **课题目的**:鉴于现有系统的不足,新的图书管理系统旨在利用现代信息技术,提高管理效率和服务质量。具体目标...

Global site tag (gtag.js) - Google Analytics