首页 > 代码库 > SQLserver 转换Mysql 一些语法使用的区别

SQLserver 转换Mysql 一些语法使用的区别


1.存储过程的语法各式
eg:
DELIMITER $$

CREATE PROCEDURE test_p_add9
(

p_name VARCHAR(100),

p_test VARCHAR(100),

p_age INT,
OUT o_newid INT
)

BEGIN

INSERT INTO table_test (f_name,f_test,f_age,f_date) VALUES (p_name,p_test,p_age,NOW());

SET o_newid=LAST_INSERT_ID();

END$$
DELIMITER ;
/*
DELIMITER 其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了。
默认情况下,delimiter是分号;。在命令行客户端中,如果有一行命令以分号结束,
那么回车后,mysql将会执行该命令。如输入下面的语句
select * from test_table;
然后回车,那么MySQL将立即执行该语句。
但有时候,不希望MySQL这么做。在为可能输入较多的语句,且语句中包含有分号。
*/
  注意点:
    a.每句话后边都要加分号。
    b.存储过程参数不需要加@
    c.使用call 调用存储过程的时候 参数 需要加@
    例如:
      SET @s=0;
      CALL test_p_add9 (‘xxx‘,‘123xx‘,12, @s);
      SELECT @s;
    d.声明变量可以直接赋值 set 不需要 declare
    e.没有 as
    f. output 在前边 sqlserver 的在后边
    g.存储过程没有参数也要写 ()
    h.mysqlparams 参数 需要用?代替 @
2.分页语句
  SELECT * FROM table_test LIMIT 5,3;
3.相应的top 语句
  SELECT * FROM table_test LIMIT 5;
4.字符串拼接使用concat
  SELECT CONCAT(‘1‘,‘2‘);
  如果使用‘1‘+‘2‘ 结果是3
5.使用now() 获取当前时间
  select now();
  select curdate()日期 current_date()
  select CURTIME()时间

6.isnull 函数
  如果参数是null 返回1 不是则返回0
7.ifnull 函数 相当于sql isnull
  ifnull(null,10)
8.uuid() 函数 代替mssql newid();

9.row_count() 函数 代替 @@rowcount
  仅限于 update delete insert
10.scop_identity()
  last_insert_id()
11.mysql 不支持nchar,nvarchar,ntext类型
12.自增语句 使用auto_increment
13. default 后边直接写值不用加括号
14.识别符
  sqlserver: [name]
  mysql: ‘name‘
15.mysql 支持 values 这个 sql sqlserver 2008 以后也支持
  INSERT INTO table_test (f_name,f_test,f_age,f_date) VALUES (‘321‘,‘321‘,21,NOW()),(‘123‘,‘123‘,123,NOW())

16 select @count=count(*) from table
  mysql select count(*) from table into @count
17 if条件语句
  if 条件 then
  end if

  或者
  if 条件 then
  else
  end if
  或者
  if 条件then
  elseif 条件 then
  end if

  eg:
    DELIMITER $$
    CREATE PROCEDURE test_test1
    (
      p_index INT
    )
    BEGIN
    IF p_index >0 THEN
      SELECT 1 ;
    ELSE
      SELECT 2;
    END IF ;

    END $$;

    DELIMITER;

    mysql 语法没有return
18. 时间操作函数
  SELECT DATE_ADD(CURDATE(),INTERVAL 1 DAY) 当前时间加1天
  SELECT DATE_SUB(CURDATE(),INTERVAL 1 DAY) 当前时间减去1天