相同的表数据在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. Swift: 一句话获取虚拟机上APP所在的目录

    在XCode6上,虚拟机的App的存放位置发生了变化,通过下面语句,我们可以立即获得其所在的位置: println(NSTemporaryDirectory())

  2. Clojure:通过cursive连接远程REPL服务器

    配置很简单,步骤如下:1.    选择Edit Configurations…2.    选择Clojure REPL -> Remote3.    输入远程服务器的ip和端口. 最后点运行就可 ...

  3. Openfire:通过Servlet群发消息

    在Openfire中自带有Broadcase插件,可以让我们群发消息给全部用户或者组.不过如果是我们通过Servlet来实现这一功能,那么是能够增加一定的灵活性的.具体做法直接看Demo代码: pub ...

  4. Android 外部存储权限分析

    不知道你有么有发现.来自菜鸟的成长史:http://blog.csdn.net/zjbpku/article/details/25161131. KitKat之后的版本号不再支持用户对外置SDcard ...

  5. clCreateCommandQueue': was declared deprecated

    今天在配置opencl的开发环境.測试用例时,用的是intel的sdk开发包.遇到了这个问题: clCreateCommandQueue': was declared deprecated 也就是说这 ...

  6. hdoj--5612--Baby Ming and Matrix games(dfs)

     Baby Ming and Matrix games Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K ...

  7. 动态规划---状压dp

    状压dp,就是把动态规划之中的一个个状态用二进制表示,主要运用位运算. 这里有一道例题:蓝书P639猛兽军团1 [SCOI2005]互不侵犯 题目: 题目描述 在N×N的棋盘里面放K个国王,使他们互不 ...

  8. bzoj4373 算术天才⑨与等差数列——线段树+set

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4373 一个区间有以 k 为公差的数列,有3个条件: 1.区间 mx - mn = (r-l) ...

  9. 【MFC】在MFC中PreTranslateMessage()的使用方法

    BOOL CSearchuserDlg::PreTranslateMessage(MSG* pMsg) { if (pMsg->message==WM_KEYDOWN) // 判断是否有按键按下 ...

  10. android黑科技系列——应用市场省流量更新(增量升级)原理解析

    一.前言 最近在看热修复相关的框架,之前我们已经看过了阿里的Dexposed和AndFix这两个框架了,不了解的同学可以点击这里进行查看:Dexposed框架原理解析 和 AndFix热修复框架原理解 ...