MSSQL转Mysql常用 一、字段类型 MSSQL Mysql 备注 "nchar" "char()" 最大长度为255 "nvarchar" "varchar": "uniqueidentifier" "varchar(36)" 默认值:uuid() 代表唯一值GUID "image" "mediumblob" "money","smallmoney" "decimal(11,2)" 二、函数 MSSQL Mysql 备注 getdate() NOW() 当前时间 @@ROWCOUNT ROW_COUNT() 影响行数 len() CHAR_LENGTH() 字符长度 DATALENGTH() LENGTH() 字节长度,mssql一个汉字2个字节,mysql一个汉字3个字节 'Li'+'Di' CONCAT('Li','Di') 字符串拼接 CHARINDEX('zh', 'De_Zha') INSTR('De_Zha','zh') 查找索引,mssql和mysql参数位置调换 CONVERT(varchar(6), '5.00') CONVERT('5.00',CHAR) 类型转换,mssql和mysql参数位置调换,且mysql不支持varchar ISNULL IFNULL 判断字符串是否为空,参数一样 DATEPART(DAY,getdate()) DAY(NOW()) 取日期的单体数据,同理有YEAR,MONTH,HOUR,WEEKDAY等等 DATEDIFF(DAY,date1,date2) TIMESTAMPDIFF(DAY,date1,date2) 取两个日期时间差,同理有YEAR,MONTH,HOUR,WEEK等等 dateadd(MONTH,1,getdate()) DATE_ADD(NOW(),INTERVAL 1 MONTH) 日期增加,同理Year,DAY,Hour等,mysql日期相减函数DATE_SUB() identity(1,1) AUTO_INCREMENT 自动增长列
bit类型字段col convert(col,signed) bit类型字段mysql直接查出来会有乱码,先要转换成数字型 三、其他(mysql语句必须以;结束) MSSQL Mysql 备注 DECLARE @a VARCHAR(10) DECLARE a VARCHAR(10) 声明变量时,mysql不能带@符号,但是mysql可以不用declare声明变量,可以直接set @a='',默认全局变量 SELECT top 10 * FROM A SELECT * FROM A LIMIT 0,10 取前10行数据 CREATE TABLE #G1DaySum CREATE TEMPORARY TABLE `G1DaySum` 创建临时表 CREATE PROCEDURE AA(a INT, b INT output) CREATE PROCEDURE AA(IN a INT, OUT b INT) 存储过程参数格式 IF() BEGIN END IF() THEN END IF if用法 WHILE() BEGIN END WHILE() DO END WHILE while用法
日期处理
【SQL SERVER】日期格式化
【MYSQL】Date和String的互相转换(DATE_FORMAT & STR_TO_DATE)
CONVERT(varchar(21) , GETDATE(), 120 )
to
DATE_FORMAT(NOW(),'%Y-%m-%d %T')
-- 20 '%Y-%m-%d %T'
-- 120 '%Y-%m-%d %T'
-- 102 '%Y-%m-%d'
-- 111 '%Y/%m/%d'
-- 112 '%Y%m%d'
-- 8 '%T'
-- 24 '%T'
-- vs中正则替换
convert(VarChar(20), max(BudgetDate),120)
转换
DATE_FORMAT(max(BudgetDate),'%Y/%m/%d')
查找内容
CONVERT\(varchar(.*), (.*),120\)
替换为
DATE_FORMAT($2,'%Y/%m/%d')
convert\(varchar\((\d*)\),(.*),121\)
DATE_FORMAT($2,'%Y-%m-%d %T')
------------------------------------------
MSSQL
Convert(int,'03')
MySQL
Convert('03',SIGNED)
------------------------------------------
dateadd(day, -1, getdate())
转换
DATE_ADD(NOW(),INTERVAL -1 DAY)
正则
dateadd\(day,(.*),(.*)\)
替换为
date_add($2,interval $1 day)
------------------------------------------
CAST(200.126 AS money)
CAST(200.126 AS DECIMAL(10,2))
常用语句
-- 分页
-- sqlserver
select row_number() over(order by date) rnumber from ttable;
-- mysql
select (@rownum := @rownum + 1) rnumber from ttable,(select @rownum := 0) b order by date;
-- 统计
select sum(amt) over() as amt from ttable;
select (@amt := @amt + amt) as amt from ttable,(@amt := 0) b
,这个送给你!