zoukankan      html  css  js  c++  java
  • sqlserver 和MySQL的一些函数的区别

    相同的表数据在sqlserver和MySQL中使用各自的函数得到相同的结果,如下表

    drop table tb;
    create table tb(id int, value1 varchar(10), value2 varchar(20));
    insert into tb values(1,'aa','11');
    insert into tb values(1,'bb','22');
    insert into tb values(2,'aaa','111');
    insert into tb values(2,'bbb','222');
    insert into tb values(2,'ccc','333');

    要想查询出如下结果

    在sqlserver中需要以下语句查询

     1 SELECT
        id,stuff(
            (
                SELECT ',' + VALUE1 FROM tb AS t WHERE t.id = tb.id FOR xml path ('')
            ), 1, 1, ''
        ) as VALUE1,
    stuff(
            (
                SELECT ',' + VALUE2 FROM tb AS t WHERE t.id = tb.id FOR xml path ('')
            ), 1, 1, ''
        ) as VALUE2
    FROM tb GROUP BY id

    在MySQL中需要以下代码查询

    1 select id, group_concat(value1)value1,group_concat(value2)value2 from tb group by id;  

    这里不是说MySQL比sqlserver好用,只是总结相同的数据在两个数据库中使用不同的方法函数得到相同的结果。

    例如如下sql

    -- 得到两个日期之间相差的月份数,也可以得到相差天数,只需要替换函数中第一个参数,注意各函数参数的取值范围,有兴趣的试下其他的。
    1
    select DATEDIFF(M,'20160506','20170606');-- sqlserver 2 select TIMESTAMPDIFF(MONTH,'20160506','20170606');-- mysql
    -- 第二个参数是否包含第一个参数,如果包含返回1,不包含返回0
    1
    select charindex('a','abcd');-- sqlserver 2 select LOCATE('a','abcd');-- mysql

    还有sqlserver 的SUBSTRING和mysql的SUBSTR

    1 create table test2 as select * from test1;-- mysql
    2 select * into test2 from test1;-- sqlserver
  • 相关阅读:
    linux搭建maven私服
    sgu438-The_Glorious_Karlutka_River
    [模板] 长链剖分
    bzoj3277-串
    [模板] 矩阵树定理
    [模板] 最短路/差分约束
    luogu2597-[ZJOI2012]灾难 && DAG支配树
    bzoj1150-[CTSC2007]数据备份Backup
    bzoj2152-[国家集训队]聪聪可可
    [模板] 树的重心/点分治/动态点分治
  • 原文地址:https://www.cnblogs.com/silentmuh/p/7454153.html
Copyright © 2011-2022 走看看