新增首行遞增
declare 使用
-- declare @startdate datetime 時間處理
set@startdate
= cast(
'2019/02/01'
asdatetime
)-- declare @a int 整型
set@a=5
-- declare @user1 nvarchar(50) 字串型
set@user1
='張三'
統一使用:
select
@user2 這種方式
exists 是判斷是否存在,和in類似,但效率要比in高select
*from emp (基礎表)
where empno >
0and
exists
(select 『x' from dept where dept.deptno = emp.deptno and loc = 『melb'
)select
*from emp (基礎表)
where empno >
0and deptno in
(select deptno from dept where loc = 『melb')
這兩句效果一樣
exists用於檢查子查詢是否至少會返回一行資料,該子查詢實際上並不返回任何資料,而是返回值true或false
'其它'
end'工資等級'
,count(*
)'人數'
from table_b
==模糊查詢
case
when
(t2.filter_method =
'like'
and t3.fieldtype =
'string'
)then locate(t2.filter_value,t.code_value)
==字串連線
case
when t.code_value like
'%'||t2.filter_value||
'%'=
=空值判斷
case
when t2.code_value is
null
then
''' '
''
空間函式# 返回結果是km 為單位
select floor(st_distance_sphere(
geomfromtext(concat(
'point('
,117.2358
,' '
,31.805681
,')'))
, geomfromtext(concat(
'point('
,117.235804
,' '
,31.805672
,')'))
))distance from dual
時間datediff:
select datediff(
minute
,'2017-12-04 22:06:00'
,'2017-12-04 22:10:00'
),start_time
from table1 t
where t.id =
'56d7bf913ab147598544b2746512cac3'
時間戳轉時間
select unix_timestamp(
'2012-09-04 18:17:23'
)
時間轉時間戳
select from_unixtime(
1346753843
)
時區轉換
select convert_tz(
'2004-01-01 12:00:00'
,'+00:00'
,'+10:00');
從0時區轉成+
10時區
日期格式化
date_format(t.expiration_date ,
'%y-%m-%d'
) date_format(t.expiration_date ,
'%y-%m-%d %h:%i:%s'
)
date_format
%w 星期名字(sunday……saturday)
%d 有英語字首的月份的日期(
1st,
2nd,
3rd, 等等。)
%y 年, 數字,
4 位%y 年, 數字,
2 位%a 縮寫的星期名字(sun……sat)
%d 月份中的天數, 數字(
00……31
)%e 月份中的天數, 數字(
0……31
)%m 月, 數字(
01……12
)%c 月, 數字(
1……12
)%b 縮寫的月份名字(jan……dec
)%j 一年中的天數(
001……366
)%h 小時(
00……23
)%k 小時(
0……23
)%h 小時(
01……12
)%i 小時(
01……12
)%l 小時(
1……12
)%i 分鐘, 數字(
00……59
)%r 時間,
12 小時(hh:mm:ss [ap]m)
%t 時間,
24 小時(hh:mm:ss)
%s 秒(
00……59
)%s 秒(
00……59
)%p am或pm
%w 乙個星期中的天數(
0=sunday ……6
=saturday )
%u 星期(
0……52
), 這裡星期天是星期的第一天
%u 星期(
0……52
), 這裡星期一是星期的第一天
%% 乙個文字「%」。
所有的其他字元不做解釋被複製到結果中。
replaceupdate tablename set recordname=
replace
(recordname,
'abc'
,'ddd'
)//將表tablename中的recordname欄位中的 abc 替換為 ddd
cast#轉字串:
cast(t.bulletion_id as
char
) bulletion_id,
ifnull#非空判斷:
ifnull(t.title,
"") title
count使用
count()是sql92定義的標準統計行數的語法,所以mysql對他進行了很多優化,myisam中會直接把錶的總行數單獨記錄下來供count()查詢,而innodb則會在掃表的時候選擇最小的索引(可能非主鍵索引)來降低成本。當然,這些優化的前提都是沒有進行where和group的條件查詢。
在innodb中count()和count(1)實現上沒有區別,而且效率一樣,但是***count(字段)需要進行欄位的非null判斷,所以效率會低一些。
因為count()是sql92定義的標準統計行數的語法,並且效率高,所以請直接使用count()查詢表的行數!
mysql 常用函式迴圈 mysql 常用函式
mysql 常用函式 數字函式 ceiling x 返回大於x的最小整數值 floor x 返回小於x的最大整數值 truncate x,y 返回數字x截短為y位小數的結果 僅僅只是截斷,不會進行四捨五入計算 聚合函式 group concat col 返回由屬於一組的列值連線組合而成的結果 字串函...
mysql常用函式哪些 MySQL常用函式彙總
數學類函式 ceil x ceilin x 進一取整 floor x 捨掉小數部分 round x,y 四捨五入 保留y位小數 mod x,y x除以y以後的餘數 abs x 取x的絕對值 power x,y pow x,y 冪運算 x的y次冪 pi 圓周率 rand 或者rand x 0 1之間的...
mysql常用轉換函式 Mysql常用函式
ip位址轉換 inet aton 將ip位址轉換成數字型 inet ntoa 將數字型轉換成ip位址 phpip位址相互轉換 ip 轉整型 ip2long 133.114.56.135 轉整型後帶符號 2056111993 bindec decbin ip2long 133.114.56.135 轉...