闪电龟龟--笔记

万物寻其根,通其堵,便能解其困。
  博客园  :: 新随笔  :: 管理

记录垃圾MySQL的蛋疼失败(相对于mssqlserver)

Posted on 2022-01-27 12:44  闪电龟龟  阅读(7)  评论(0编辑  收藏  举报

我疯了呀。。。

1.解决方案:将convert 换成substring   

 

 mysql和mssqlserver差异(不要问我为什么骂的厉害,作为一个经常使用存储过程的我要去转换几个项目的存储过程,我感觉我要废了)

    mysql  mssqlserver  说明
获取实时时间差异 now() getdate()  
获取前几条数据差异 select * from 表名 limit 1;  // limit 1,1 select top 1 * from 表名  
数据类型转换的差异 CONVERT(CS_PageIndex,signed) CONVERT(int,CS_PageIndex)  
条件语句的差异 while do{}end while; while()begin{}end  
if() then elseif() then{}else{} end if;  if() begin{}end else if() begin{}end else begin{}end  
函数的差异  IFNULL(abc,0)  isnull(abc,0);  如果abc为空,赋值0
检索位置  INSTR(Knowledge,',');  CHARINDEX(',',Knowledge)  
获取长度  LENGTH('')  len('')  
时间转换

DATEDIFF(NOW(),'2021-8-10 23:59:59')

TIMESTAMPDIFF(SECOND,now(),'2021-10-22 23:59:59')  -- 秒

/*

可查看:https://www.cnblogs.com/uiee/p/10671519.html

SELECT 
TIME_TO_SEC(TIMEDIFF('2018-09-30 19:38:45', '2018-08-23 10:13:01')) AS DIFF_SECOND1, -- 秒
UNIX_TIMESTAMP('2018-09-30 19:38:45')-UNIX_TIMESTAMP('2018-08-23 10:13:01') AS DIFF_SECOND2, -- 秒
TIMESTAMPDIFF(SECOND,'2018-08-23 10:13:01','2018-09-30 19:38:45') AS DIFF_SECOND3, -- 秒
TIMESTAMPDIFF(MINUTE,'2018-08-23 10:13:01','2018-09-30 19:38:45') AS DIFF_MINUTE, -- 分
TIMESTAMPDIFF(HOUR,'2018-08-23 10:13:01','2018-09-30 19:38:45') AS DIFF_HOUR, -- 小时
TIMESTAMPDIFF(DAY ,'2018-08-23 10:13:01','2018-09-30 19:38:45') AS DIFF_DATE1, -- 天
DATEDIFF('2018-09-30 19:38:45','2018-08-23 10:13:01') AS DIFF_DATE2, -- 天
TIMESTAMPDIFF(MONTH,'2018-08-23 10:13:01','2018-09-25 19:38:45') AS DIFF_MONTH, -- 月
TIMESTAMPDIFF(YEAR,'2018-08-23 10:13:01','2020-07-25 19:38:45') AS DIFF_YEAR -- 年
FROM DUAL;

*/

DATEDIFF(day,CONVERT(datetime,'2021-8-10 23:59:59'),GETDATE());  
字符串拼接 CONCAT('%',UPPER(CS_SearchText),'%'); 直接使用+拼接  
 

1.存储过程中无法使用'+'拼接字符串,只能通过CONCAT(string1,string2)

2.叼毛存储过程中的临时表必须用完即删除,不然会影响下次查询

3.mysql兼容性差的要死

delete from ReTable where auto_id not in (select auto_id from ReTable order by auto_id asc LIMIT TCS_Top_Num);  -- 执行不了
delete from ReTable where auto_id not in (select auto_id from (select auto_id from ReTable order by auto_id asc LIMIT TCS_Top_Num) as TempReTable);  -- 多加一层就可以

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 




 

mysql8.0与mysql5.6差异

1.for update into

2.CONVERT(SUBSTRING(CS_ReadScore,1,(TCS_TIndexVal-1)),float)      CONVERT(SUBSTRING(CS_ReadScore,1,(TCS_TIndexVal-1)),DECIMAL(5,2))

 

 

 

 

mysql中一些优化操作(后续补充笔记)

https://baijiahao.baidu.com/s?id=1644358136491778500&wfr=spider&for=pc