MySQL5.0 对SQL-92的兼容程度
[ 2007-04-12 21:57:28 | 作者: progame ]
虽然MySql都已经5.2Beta版了,不过我因为是以前下载的5.0,懒得再去下了,估摸着sql语法也不会有太大变化,因为SqlBroker已经移植到Java平台,那么必然要完成MySql的Translator了,很多年前,Sql Server和Oracle 8i/9i的Translator已经完成,从代码行数对比来看,MySql对标准SQL的兼容性算是不错的了,Sql Server使用了400行进行转换,MySql只用了200行,当然都是从TranslatorBase这个抽象基类派生而来的,使用的是Template模式,基类有1500行左右
那么到底需要处理哪些不兼容的地方呢?
- 数据类型而言兼容性不错,基本都可以找到对应
- OVERLAY的字段串函数同样没有,使用left right代替实现
- DATE_ADD, DATE_SUB, DATE_DIFF使用TIMESTAMPADD, TIMESTAMPSUB, TIMESTAMPDIFF,而这三个函数不接受interval为Microssecond
- ||在MySql中为or, 所以需要替换成concat
- LIKE的escape char中'\'是转义字符,所以如果是escape '\',则需要改为escape '\\'
- DATE TIME TIMESTAMP常量不需要字符标识前导
- CAST转换有些异样,后面不是一般的datatype定义,而是缩减为几个类型关键词
- 对于dirived query一定要指明alia,这点和sql server一样
- object使用'做为标识符
- 不支持full join,不支持select into new_table
在处理完这些问题后,单元测试全部通过,oh yeah!
评论Feed: /feed.asp?q=comment&id=694
您可能感兴趣的文章:
Sql Server 2005 还真是聪明了很多 (progame at 2007-06-25)
转: MySQL查询优化系列讲座之查询优化器 (progame at 2007-07-07)
转: MySQL查询优化系列讲座之数据类型与效率 (progame at 2007-07-07)
转: MySQL查询优化讲座之管理员的优化措施 (progame at 2007-07-07)
转: MySQL查询优化系列讲座之调度和锁定 (progame at 2007-07-07)
MySql 中文编码的解决方法以及其它的一些问题 (progame at 2008-04-23)
从coco/r 迁移到 antlr 心得体会 (progame at 2007-03-28)
这篇日志没有评论.

