MySQL語句小技巧集合--持續更新

  • 中文排序
  1. MySQL裏按中文排序,MySQL裏默認的不是用ASCII值排序的需轉換成GBK纔可以  ORDER BY  CONVERT('字段名稱',USING GBK) DESC

  • 查詢出的字段拼成一個字符串

      GROUP_CONCAT(字段名),

---例
SELECT GROUP_CONCAT(s.NAME) FROM sys_dictionaries s WHERE s.ZD_CODE='ZCZT'

  • 轉化字符串
  1. 比如將123轉換爲char類型     SELECT CAST(123 AS CHAR); 
  2. 或者使用concat方法 這個方法在SpringMVC框架裏不是很好使   SELECT CONCAT(123,'');
  3. 或者使用+''方法   SELECT 123+'';

  • 時間和字符串
  1. oraclel

         to_date('2017-03-04','yyyy-MM-dd') 

  1. MySQL:

         時間轉字符串:select date_format(now(), '%Y-%m-%d');   --2018-12-13

         時間轉時間戳:select unix_timestamp(now());     --1544664386

         字符串轉時間:select str_to_date('2016-01-02', '%Y-%m-%d %H');  --2017-01-02 00:00:00

          時間戳轉時間:select from_unixtime(1544665532, '%Y-%m-%d %H:%i:%S');  --2018-12-13 09:45:32 後面的格式可以不              寫 select from_unixtime(1544665532)

  1. MySQL日期格式化(format)取值範圍。
  含義
%S、%s 兩位數字形式的秒( 00,01, ..., 59)
%I、%i 兩位數字形式的分( 00,01, ..., 59)
小時  %H 24小時制,兩位數形式小時(00,01, ...,23)
%h 12小時制,兩位數形式小時(00,01, ...,12)
%k 24小時制,數形式小時(0,1, ...,23)
%l 12小時制,數形式小時(0,1, ...,12)
%T 24小時制,時間形式(HH:mm:ss)
%r  12小時制,時間形式(hh:mm:ss AM 或 PM)
%p  AM上午或PM下午 
周  %W 一週中每一天的名稱(Sunday,Monday, ...,Saturday)
%a 一週中每一天名稱的縮寫(Sun,Mon, ...,Sat) 
%w  以數字形式標識周(0=Sunday,1=Monday, ...,6=Saturday) 
%U 數字表示週數,星期天爲週中第一天
%u 數字表示週數,星期一爲週中第一天
%d  兩位數字表示月中天數(01,02, ...,31)
%e   數字表示月中天數(1,2, ...,31)
%D 英文後綴表示月中天數(1st,2nd,3rd ...) 
%j 以三位數字表示年中天數(001,002, ...,366) 
%M  英文月名(January,February, ...,December) 
%b  英文縮寫月名(Jan,Feb, ...,Dec) 
%m  兩位數字表示月份(01,02, ...,12)
%c  數字表示月份(1,2, ...,12) 
%Y  四位數字表示的年份(2015,2016...)
%y   兩位數字表示的年份(15,16...)
文字輸出  %文字  直接輸出文字內容

  • 查找某個字符串在一個字段裏
  1. FIND_IN_SET(str,strlist)

假如字符串str 在由N 子鏈組成的字符串列表strlist 中, 則返回值的範圍在 1 到 N 之間 。一個字符串列表就是一個由一些被‘,’符號分開的自鏈組成的字符串。如果第一個參數是一個常數字符串,而第二個是type SET列,則   FIND_IN_SET() 函數被優化,使用比特計算。如果str不在strlist 或strlist 爲空字符串,則返回值爲 0 。如任意一個參數爲NULL,則返回值爲 NULL。 這個函數在第一個參數包含一個逗號(‘,’)時將無法正常運行。 


  • IF VS CASE
  1. IF(Condition,A,B)

當Condition爲TRUE時,返回A;當Condition爲FALSE時,返回B。 

例:select if(1=1 and 1=2,'1','0') testValue from dual

擴展:IFNULL(expr1,expr2

假如expr1 不爲 NULL,則 IFNULL() 的返回值爲 expr1; 否則其返回值爲 expr2。IFNULL()的返回值是數字或是字符串,             具體情況取決於其所使用的語境。

例:SELECT IFNULL('',2) testValue --''; SELECT IFNULL(null,2) testValue --2;

  1. CASE

簡單函數:CASE [col_name] WHEN [value1] THEN [result1]…ELSE [default] END

搜索函數:CASE WHEN [expr] THEN [result1]…ELSE [default] END

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章