sql 语句的一些使用


截取字段

  1. left(str, length) 从左往右截length位
  2. right(str, length) 从右往左截取length位
  3. substring(str, pos); substring(str, pos, len) 从第pos位置截取len位
  4. 字符位置 4.1. mysql ---> substring_index(str,delim,count) 截取第count个‘delim’之前的所有字符(count负数时,表示之后的所有字符) 4.2. sqlserver ---> charindex(delim,str) 返回str中‘delim’的位置

时间处理

1. 时间格式转换
1.1. sqlserver
Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46
Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
Select CONVERT(varchar(100), GETDATE(), 20): 2020-11-27 10:57:47
Select CONVERT(varchar(100), GETDATE(), 21): 2020-11-27 10:57:47.157
Select CONVERT(varchar(100), GETDATE(), 23): 2020-11-27
Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47
Select CONVERT(varchar(100), GETDATE(), 25): 2020-11-27 10:57:47.250
Select CONVERT(varchar(100), GETDATE(), 102): 2020.11.27
Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49
Select CONVERT(varchar(100), GETDATE(), 111): 2020/11/27
Select CONVERT(varchar(100), GETDATE(), 112): 20201127
Select CONVERT(varchar(100), GETDATE(), 113): 27 11 2020 10:57:49:513
Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
Select CONVERT(varchar(100), GETDATE(), 120): 2020-11-27 10:57:49
Select CONVERT(varchar(100), GETDATE(), 121): 2020-11-27 10:57:49.700
1.2. mysql
DATE_FORMAT(new(),'%Y-%m-%d %H:%i:%s'): 2020-11-27 10:57:49

存在则修改不存在则插入

1. sqlserver
IF EXISTS (SELECT 1 FROM 表名 WHERE 条件)
UPDATE 表名 SET 字段= WHERE 条件
ELSE
INSERT INTO 表名(字段) VALUES()
2. mysql
INSERT INTO 表名 (字段) VALUES() ON DUPLICATE KEY UPDATE 字段=
ON DUPLICATE KEY UPDATE语法的规则:如果你插入的记录导致一个UNIQUE索引或者primary key(主键)出现重复,那么就会认为该条记录存在,则执行update语句而不是insert语句,反之,则执行insert语句而不是更新语句

case when

select
(case sex when '1' then '男' when '2' then '女' else '保密' end),
(case when len(name)>3 then left(name)+'...' else name end)
from user

一些mysql和sqlserver的常见不同用法

  1. 标识符限定符
SqlServer   []
MySql   ``
  1. 字符串相加
SqlServer   直接用 +
MySql   concat()
  1. isnull()
SqlServer   isnull()
MySql   ifnull()
注意:MySql也有isnull()函数,但意义不一样
  1. getdate()
SqlServer   getdate()
MySql   now()
  1. newid()
SqlServer   newid()
MySql   uuid()
  1. @@ROWCOUNT
SqlServer   @@ROWCOUNT
MySql   row_count()
注意MySql的这个函数仅对于update, insert, delete有效
  1. SCOPE_IDENTITY()
SqlServer   SCOPE_IDENTITY()
MySql   last_insert_id()