mysql 經常使用函數-locate 和 instr 和 regexp

★1

-- 表級鎖 狀況
SHOW STATUS LIKE 'table%';
-- 行級鎖 狀況
SHOW STATUS LIKE 'innodb_row_lock%';php

-- 進程列表
SHOW PROCESSLIST ;html

SHOW STATUS ;函數



locate 和 instr 和 regexp

# 0、REGEXP http://www.sohu.com/a/125611614_505818 https://blog.csdn.net/liuchunming033/article/details/47153807


  SELECT prod_name FROM products WHERE prod_name REGEXP '.000' ORDER BY prod_name;  檢索列prod_name中包含1000、2000、3000等的全部行優化

 
  
 SELECT prod_name FROM products WHERE prod_name REGEXP '[123] Ton' ORDER BY prod_name;  匹配幾個字符之一[]
 SELECT vend_name FROM vendors WHERE vend_name REGEXP '\\.' ORDER BY vend_name;  匹配特殊字符好比.,、, ,|,[],、-等特殊字符。須要在特殊符號前面加兩個斜線:\\。


SELECT * FROM my_user WHERE `name` REGEXP '[12]'; # 查詢名字中包含有數字1或者數字2的記錄,它是[1|2]的縮寫。
SELECT prod_name FROM products WHERE prod_name REGEXP '1000|2000' ORDER BY prod_name; 檢索列prod_name中包含1000或2000的全部行

SELECT * FROM my_user WHERE `name` REGEXP '[^12]'; # 那麼就表明除了1或2外的字符串。
select name from 表名 where name regexp '^王';  ^,匹配字符串開始位置,仍是上面的例子,查詢全部姓王的人名 https://www.cnblogs.com/wangmeijian/p/5392954.html
select name from 表名 where name regexp '明$';  $,匹配字符串結束位置,如查詢全部姓名末尾是「明」的人名

   說明:表中小紅100,雖然包含1,可是他包含了0。0不屬於1或者2,因此被匹配。spa

 


/*
一、 LOCATE(substr,str) , 返回字符串 str中子字符串substr的第一個出現位置 LOCATE(substr,str,pos) 返回字符串 str中子字符串substr的第一個出現位置, 起始位置在pos。如若substr 不在str中,則返回值爲0 */ SELECT LOCATE("a","A") LOCATE; -- 1 注意:該函數不區分大小寫 SELECT LOCATE('bar', 'foobarbar') LOCATE; -- 4 SELECT LOCATE('xbar','foobar') LOCATE; -- 0 未找到值 SELECT LOCATE('bar', 'foobarbar',5) LOCATE; -- 7 SELECT LOCATE(NULL, 'foobarbar',5) LOCATE; -- 當某個參數爲null,則返回NULL #2、POSITION(substr IN str)   是 LOCATE(substr,str)同義詞 SELECT POSITION("p" IN 'php'); -- 1 注意:該函數不區分大小寫 SELECT POSITION("php" IN 'p'); -- 0 SELECT POSITION(NULL IN 'php');-- 返回null /*三、 FIND_IN_SET(str,strlist) 假如字符串str 在由N 子鏈組成的字符串列表strlist 中, 則返回值的範圍在 1 到N 之間 。一個字符串列表就是一個由一 些被‘,’符號分開的自鏈組成的字符串。若是第一個參數是一個常數字符串,而第二個是type SET列,則   FIND_IN_SET() 函數被優化,使用比特計算。 若是str不在strlist 或strlist 爲空字符串,則返回值爲 0 。如任意一個參數爲NULL,則返回值爲 NULL。 這個函數在第一個參數包含一個逗號(‘,’)時將沒法正常運行。 select * from mobile where FIND_IN_SET('4',type); 這個就能夠找出全部1000元如下手機的記錄! */ SELECT FIND_IN_SET("Ab","d2,AB,qw") find; -- 2 不區分大小寫 SELECT FIND_IN_SET(NULL,"AB") find; # 4、INSTR(str,substr) (這個函數和locate做用很像) # 返回字符串 str 中子字符串的第一個出現位置。這和LOCATE()的雙參數形式相同,除非參數的順序被顛倒。 SELECT INSTR("abcdefg","bc") INSTR; -- 2 不區分大小寫 SELECT INSTR("abcdefg",NULL) INSTR;

 

.net

相關文章
相關標籤/搜索