相同的表数据在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中需要以下语句查询

 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中需要以下代码查询

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

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

例如如下sql

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

还有sqlserver 的SUBSTRING和mysql的SUBSTR

 create table test2 as select * from test1;-- mysql
select * into test2 from test1;-- sqlserver

sqlserver 和MySQL的一些函数的区别的更多相关文章

  1. 日期时间函数 mysql 和sqlserver 中对于常用函数的日期和时间函数的区别

    1. sqlserver中获取时间用getdate(),默认返回格式是2019-01-21 13:58:33.053,具体的年月日,时分秒毫米,年月日之间用短线连接,时分秒之间用冒号连接,秒和毫米之间 ...

  2. 你搞懂 ORACLE、 SQLSERVER、MYSQL与DB2的区别了吗

    ORACLE. SQLSERVER.MYSQL与DB2的区别--平台性:    Oracle.MYSQL与DB2可在所有主流平台上运行:    SQL Server只能在Windows下运行: --安 ...

  3. SQLServer和MySql的区别总结

    SqlServer支持like '%'+'87'+'%' 拼接字符串  但MySql里不支持,只能用CONCAT('%','87','%')拼接,否则异常 1.递归函数的区别类别表CREATE TAB ...

  4. SQLServer Oracle MySQL的区别

    table tr:nth-child(odd){ background: #FFFFCC; font-size: 18px; } table tr:nth-child(even){ backgroun ...

  5. Mysql 存储过程和函数区别

    存储过程是procedure用户定义的一系列sql语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表. 存储 ...

  6. MySQL存储过程/存储过程与自定义函数的区别

    语法: 创建存储过程: CREATE [definer = {user|current_user}] PROCEDURE sp_name ([ proc_parameter [,proc_parame ...

  7. (转)MySQL存储过程/存储过程与自定义函数的区别

    转自:http://www.cnblogs.com/caoruiy/p/4486249.html 语法: 创建存储过程: CREATE [definer = {user|current_user}]  ...

  8. MySQL中时间函数NOW()和SYSDATE()的区别

    mysql中日期函数还是比较常用的.主要有NOW()和SYSDATE()两种,虽然都表示当前时间,但使用上有一点点区别. NOW()取的是语句开始执行的时间,SYSDATE()取的是动态的实时时间. ...

  9. MySQL中SYSDATE()和NOW()函数的区别和联系

    MySQL中有5个函数需要计算当前时间的值: NOW.返回时间,格式如:2012-09-23 06:48:28 CURDATE,返回时间的日期,格式如:2012-09-23 CURTIME,返回时间, ...

随机推荐

  1. Sunnypig闯三角关

    背景 贪玩的sunnypig请Charles为他打造一个奇幻世界,Charles欣然答应了.然而一向善于出难题的Charles是决不会轻易让sunnypig轻松拥有一个奇幻世界的,于是Charles在 ...

  2. MySQL系列:innodb源码分析 图 ---zerok的专栏

    http://blog.csdn.net/yuanrxdu/article/details/40985363

  3. HTML5:判断浏览器是否支持date类型

    在某些情况下,我们需要判断当前浏览器是否支持date类型,如果支持的话,可以让用户用原生的datepicker来选取日期.如果不支持,则我们需要用自己实现的datepicker类库,来提供给用户. 在 ...

  4. 可编辑ztree节点的增删改功能图标控制---已解决

    每文一语:休倚时来势,提防运去时 <!DOCTYPE html> <HTML> <HEAD> <TITLE> ZTREE DEMO - beforeEd ...

  5. but no declaration can be found for element &#39;aop:aspectj-autoproxy&#39;.

    1.错误描写叙述 Multiple annotations found at this line: - cvc-complex-type.2.4.c: The matching wildcard is ...

  6. 用Radeon RAMDisk在Windows 10中创建关机或重新启动不消失的内存虚拟盘

    之前用ImDisk创建的内存虚拟盘每次关机或重新启动后就会消失,想要开机自己主动创建内存虚拟盘尽管能够用批处理来实现,但还是有点不爽.下载试用了Radeon RAMDisk(Radeon_RAMDis ...

  7. LeetCode 234 Palindrome Linked List(回文链表)(*)(?)

    翻译 给定一个单链表,确定它是否是回文的. 跟进: 你能够在O(n)时间和O(1)空间下完毕它吗? 原文 Given a singly linked list, determine if it is ...

  8. 飘逸的python - 极简的二叉树前中后序通杀函数

    对于任一结点.能够按某种次序运行三个操作: 訪问结点本身(N) 遍历该结点的左子树(L) 遍历该结点的右子树(R) 用来表示顺序,即,前序NLR/中序LNR/后序LRN. 以下我们用namedtupl ...

  9. Windows 驱动开发 - 8

    最后的一点开发工作:跟踪驱动. 一.驱动跟踪 1. 包括TMH头文件 #include "step5.tmh" 2. 初始化跟踪 在DriverEntry中初始化. WPP_INI ...

  10. ExtJs 给grid某一单元格重新赋值

    // 司机,搬运工提成 var commissionMoney = (waybillsFtQty * commissionMoneyRatio / personCount).toFixed(2); / ...