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行左右

那么到底需要处理哪些不兼容的地方呢?

  1. 数据类型而言兼容性不错,基本都可以找到对应
  2. OVERLAY的字段串函数同样没有,使用left right代替实现
  3. DATE_ADD, DATE_SUB, DATE_DIFF使用TIMESTAMPADD, TIMESTAMPSUB, TIMESTAMPDIFF,而这三个函数不接受interval为Microssecond
  4. ||在MySql中为or, 所以需要替换成concat
  5. LIKE的escape char中'\'是转义字符,所以如果是escape '\',则需要改为escape '\\'
  6. DATE TIME TIMESTAMP常量不需要字符标识前导
  7. CAST转换有些异样,后面不是一般的datatype定义,而是缩减为几个类型关键词
  8. 对于dirived query一定要指明alia,这点和sql server一样
  9. object使用'做为标识符
  10. 不支持full join,不支持select into new_table

在处理完这些问题后,单元测试全部通过,oh yeah!

评论Feed 评论Feed: /feed.asp?q=comment&id=694

这篇日志没有评论.

发表
表情图标
[smile] [confused] [cool] [cry]
[eek] [angry] [wink] [sweat]
[lol] [stun] [razz] [redface]
[rolleyes] [sad] [yes] [no]
[heart] [star] [music] [idea]
UBB代码
转换链接
表情图标
悄悄话
用户名:   密码:   (非注册用户不需要输入密码) 注册?
验证码(不区分大小写) * 请输入验证码