MySQL与Transact SQL(MS SQL Server)的SQL语句区别点滴(C++)

本文总结了MySQL和MS SQL Server在日期时间、二进制数组及字符串处理上的不同,包括插入日期时间的方式,二进制数据存储格式,以及字符串处理的注意事项。在MySQL中,日期时间函数如NOW()、CURDATE()和CURTIME()各有其特定用法,而在MS SQL Server中,需使用GetDate()。此外,文章提供了将二进制字符串转换为0x...格式的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在写一个数据访问层,要求能够使用MySQL和MS SQL Server。

 

烦劳从此开始,MySQL与MS SQL Server的大量不一致让人烦不胜烦,为了使其他人不再犯自己工作过程中犯下的错误,并且,有个地方记录自己的心得体会,特分享如下:

 

这里MySQL使用的是C API

MS SQL Server使用的是ADO

 

一.列类型问题

1.时间类型

真是不做不知道,做了才知道,MySQL存储日期时间的格式为:2010-09-02 15:01:01, 而MS SQL Server存储的日期时间格式为:2010-9-2 15:01:01

获取当前日期时间的日期时间函数,MySQL为NOW(),MS SQL Server为GetDate(),即:

MySQL:insert into(time) values(NOW());

MS SQL Server:insert into(time) values(GetDate());

 

MySQL中的相关函数为:

NOW()函数以`'YYYY-MM-DD HH:MM:SS'返回当前的日期时间,可以直接存到DATETIME字段中。
CURDATE()以’YYYY-MM-DD’的格式返回今天的日期,可以直接存到DATE字段中。
CURTIME()以’HH:MM:SS’的格式返回当前的时间,可以直接存到TIME字段中。

 

2.二进制数组

存储二进制文件,SQL怎么写?

MySQL:insert into(binary) values('这里必须写经过mysql_real_escape_string转义后 的字符串,注意哦,左右可是有单引号的');

或者insert into(binary) values(0xABCDEF1234567890);

 

MS SQL Server:insert into(binary) values(0xABCDEF1234567890);

注意:0xABCDEF1234567890为经过转义后 的16进制串

 

当以上所有存储的数据取出后,结果直接为 转义前 的二进制字符串

 

如何将一个二进制字符串转化为0x......

long toX(char * pDst, long DstLen, const char * pSrc, long SrcLen)

{

    if(NULL == pDst || NULL == pSrc)

    {

        return -1;

    }

    if(DstLen < 2*Src + 3)

    {

        return -1;

    }

 

    *pDst++ = '0';

    *pDst++ = 'x';

    const char tab[] = "0123456789ABCDEF";

    for(int i=0;i<SrcLen;++i)

    {

        *pDst++ = tab[*pSrc>>4];

        *pDst++ = tab[*pSrc&0x0F];

        pSrc++;

    }

    *pDst = '/0';

    return 2*Src + 3;

}

 

3.字符串

MySQL:insert into(binary) values('这里必须写经过mysql_real_escape_string转义后 的字符串,注意哦,左右可是有单引号的');

MS SQL Server:insert into(binary) values('这里直接写即可,但是,如果是特殊字符,需要记得数据库使用Unicode编码');

 

二.相关资源供查询

MySQL中文手册:http://dev.mysql.com/doc/refman/5.1/zh/index.html

MS SQL Server在MSDN上的资料:http://msdn.microsoft.com/zh-cn/library/ms203721%28v=sql.90%29.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值