MYSQLのいくつかの文字列の処理、例えばつなぎ、切り取りなど、同じフィールドの複数の値の処理に便利です.



  
  
  
  
  1.  --  time   '' 
  2.  
  3. SELECT TIME_TO_SEC('22:23:00'
  4. --  Unix ( ’1970-01-01 00:00:00′GMT ,date )  
  5. select UNIX_TIMESTAMP();  
  6. -> 882226357     -- 1357792552 
  7. select UNIX_TIMESTAMP('1997-10-04 22:23:00');  
  8. -- 875974980 
  9. -- FROM_UNIXTIME(unix_timestamp)  
  10. --  ’YYYY-MM-DD HH:MM:SS’ YYYYMMDDHHMMSS ( )  
  11. select FROM_UNIXTIME(875996580); 
  12. -- 1997-10-05 04:23:00 

 
 

  
  
  
  
  1. ------------------- mysql ( )--- 
  2.  
  3. SUBSTRING(str,pos); 
  4. SELECT SUBSTRING(SUBSTRING_INDEX('BGP-Beijing-59.151.105.130-AD_read-YeZongKun','-',3),  
  5. (LENGTH(SUBSTRING_INDEX('BGP-Beijing-59.151.105.130-AD_read-YeZongKun','-',2))+2)); 
  6.  
  7. SUBSTRING(str,pos,len); 
  8. SUBSTRING(str FROM pos FOR len); 
  9. SUBSTRING(str,pos); 
  10. SUBSTRING(str FROM pos); 
  11. -- ratically 
  12. SELECT SUBSTRING('Quadratically',5); 
  13. -- index  tbarbar 
  14. SELECT SUBSTRING('footbarbar' FROM 4); 
  15. --  5 6  
  16. SELECT SUBSTRING('Quadratically',5,6); 
  17. --  3  
  18. SELECT SUBSTRING('Sakila',-3); 
  19. SELECT SUBSTRING('Sakila',-1); 
  20. -- aki  5 3  
  21. SELECT SUBSTRING('Sakila',-5,3); 
  22. -- ki  
  23. SELECT SUBSTRING('Sakila' FROM -4 FOR 2); 

subString_indexとsubString,concatを組み合わせて使用
 
 

  
  
  
  
  1. --   str   count   delim   
  2. SUBSTRING_INDEX(str,delim,count); 
  3. -- www.mysql  , ( )  
  4. SELECT SUBSTRING_INDEX('www.mysql.com.cn','.',2); 
  5. -- mysql.com  , ( )  
  6. SELECT SUBSTRING_INDEX('www.mysql.com','.',-2); 
  7.  
  8. --   
  9. -- replace(field,str,str1)  field str str1  
  10. UPDATE table SET name=REPLACE(name'abc''123'); 
  11. --  CONCAT(str1,str2,...) 
  12. UPDATE TABLE SET name=CONCAT(name,'-old'); 
  13.  
  14. -- concat   SUBSTRING_INDEX(str,delim,count)  
  15. -- update tb_user set name = concat(SUBSTRING_INDEX(name,'-',2),'-','1234') where uid = 271338 ;  
  16.  
  17. -- ELT(N,str1,str2,str3,…) N (N 1 NULL) 
  18. SELECT ELT(2,1035089,319,6286,1997,1899); 
  19. --  319 
  20.  
  21. --   
  22. desc user_info 
  23. -- case when then 
  24. select  date,min(case when type='a' then value end),min(case when type='b' then value end
  25. from tb 
  26. group by date 

 
eg:
SELECT SUBSTRING(SUBSTRING_INDEX('BGP-Beijing-59.151.105.130-AD_read-YeZongKun','-',3),
(LENGTH(SUBSTRING_INDEX('BGP-Beijing-59.151.105.130-AD_read-YeZongKun','-',2))+2));
 
 

  
  
  
  
  1. -- INSTR(str,substr)  substr str (str substr 0)  
  2. select INSTR('foobarbar''bar'); -- 4 
  3. --  str mysql> select LTRIM(‟  barbar‟); -> „barbar‟ 
  4. SELECT LTRIM(str) 
  5. -- REVERSE(str)  str  mysql> select REVERSE(‟abc‟); -> „cba‟ 
  6. SELECT REVERSE(str) 
  7.  
  8. -- INSERT(str,pos,len,newstr)  str pos len newstr   
  9. select INSERT('Quadratic', 3, 4, 'What'); 
  10. -- QuWhattic 


 

rankingListInfo(500,300,200,123,409,) 

  1. SELECT INSERT((SELECT rankingListInfo FROM user_info WHERE uid = 1),17,7,(SELECT SUBSTRING_INDEX(rankingListInfo,',',2) FROM user_info WHERE uid =1))  
  2.  
  3. SELECT RIGHT((SELECT INSERT((SELECT rankingListInfo FROM user_info WHERE uid = 1),17,7,(SELECT SUBSTRING_INDEX(rankingListInfo,',',2) FROM user_info WHERE uid =1))  
  4. ),13)
  5.  
  6.  -----PHP ---
  7. list($one,$two,$three,$four,$five) = explode('-',$rankingListInfo);

  8. 5 , one,two,three...


 
--
変数に値を割り当てる----さらに他の値を割り当てる操作を同じテーブルでクエリーしてupdate-----
 

  
  
  
  
  1. DECLARE @list VARCHAR
  2. SET @list = (SELECT SUBSTRING_INDEX((SELECT rankingListInfo FROM user_info WHERE uid = 1),',',-4)); 
  3.  
  4. SELECT @list; 
  5.  
  6. UPDATE user_info set rankingListInfo = @list WHERE uid =1; 
  7.  
  8. SELECT rankingListInfo from user_info WHERE uid= 1; 
  9. --  -------------------- 
  10. UPDATE user_info SET rankingListInfo = CONCAT(rankingListInfo,'500,500,'WHERE uid =1;