javascript獲取url參數和script標簽中獲取url參數函數代碼?
通過使用可以獲取到當前URL的?號開始的字符串,如前面的鏈接獲取到的search為?id001,再對獲取的字符串進行處理,就可以獲取到參數的值了,參考代碼如下: functiongetUrlParam(name){ varregnewRegExp(
excel判斷是否包含字符?
1打開Excel數據表,將A列中含有“肉”字的單元格快速找出來。
2首先,選擇含有數據的單元格區域,將A列中有數據的單元格全選中。
3然后點擊菜單欄中“開始”選項卡中的“條件格式”、“突出顯示單元格規則”、“文本包含”。
4在彈出的對話框輸入要查找的字符“肉”,然后格式可以自定義,也可以使用系統默認的格式。
5點擊“確定”,也可以看到A列選擇的區域中含有指定字符的單元格就被標識出來,這樣就可以快速找出了。
mysql中怎樣對大批量級的數據查詢進行優化?
MySQL一直以來都支持正則匹配,不過對于正則替換則一直到MySQL8.0才支持。對于這類場景,以前要么在MySQL端處理,要么把數據拿出來在應用端處理。
比如我想把表y1的列str1的出現第3個action的子串替換成dble,怎么實現?
1.自己寫SQL層的存儲函數。代碼如下寫死了3個,沒有優化,僅僅作為演示,MySQL里非常不建議寫這樣的函數。
mysql
DELIMITER$$
USE`ytt`$$
DROPFUNCTIONIFEXISTS`func_instr_simple_ytt`$$
CREATEDEFINER`root`@`localhost`FUNCTION`func_instr_simple_ytt`(
f_strVARCHAR(1000),--Parameter1
f_substrVARCHAR(100),--Parameter2
f_replace_strvarchar(100),
f_timesint--timessupport3.
)RETURNSvarchar(1000)
BEGIN
declarev_resultvarchar(1000)defaultytt--result.
declarev_substr_lenintdefault0--searchstringlength.
setf_times3--onlysupport3.
setv_substr_lenlength(f_substr)
selectinstr(f_str,f_substr)into@p1--Firstrealposition.
selectinstr(substr(f_str,@p1v_substr_len),f_substr)into@p2Secondaryvirtualposition.
selectinstr(substr(f_str,@p2@p12*v_substr_len-1),f_substr)into@p3--Thirdvirtualposition.
if@p1gt0ampamp@p2gt0ampamp@p3gt0then--Fine.
select
concat(substr(f_str,1,@p1@p2@p3(f_times-1)*v_substr_len-f_times)
,f_replace_str,
substr(f_str,@p1@p2@p3f_times*v_substr_len-2))intov_result
else
setv_resultf_str--Neverchanged.
endif
--Purgeallsessionvariables.
set@p1null
set@p2null
set@p3null
returnv_result
end
$$
DELIMITER
--調用函數來更新:
mysqlgtupdatey1setstr1func_instr_simple_ytt(str1,action,dble,3)
QueryOK,20rowsaffected(0.12sec)
Rowsmatched:20Changed:20Warnings:0
2.導出來用sed之類的工具替換掉在導入,步驟如下:(推薦使用)1)導出表y1的記錄。
mysqlmysqlgtselect*fromy1intooutfile/var/lib/mysql-files/y1.csvQueryOK,20rowsaffected(0.00sec)
2)用sed替換導出來的數據。
:/var/lib/mysql-files#sed-is/action/dble/3y1.csv
3)再次導入處理好的數據,完成。
mysql
mysqlgttruncatey1
QueryOK,0rowsaffected(0.99sec)
mysqlgtloaddatainfile/var/lib/mysql-files/y1.csvintotabley1
QueryOK,20rowsaffected(0.14sec)
Records:20Deleted:0Skipped:0Warnings:0
以上兩種還是推薦導出來處理好了再重新導入,性能來的高些,而且還不用自己費勁寫函數代碼。那MySQL8.0對于以上的場景實現就非常簡單了,一個函數就搞定了。
mysqlmysqlgtupdatey1setstr1regexp_replace(str1,action,dble,1,3)QueryOK,20rowsaffected(0.13sec)Rowsmatched:20Changed:20Warnings:0
還有一個regexp_instr也非常有用,特別是這種特指出現第幾次的場景。比如定義SESSION變量@a。
mysqlmysqlgtset@aaabbcceefilucy111bs234523556119101020301040QueryOK,0rowsaffected(0.04sec)
拿到至少兩次的數字出現的第二次子串的位置。
mysqlmysqlgtselectregexp_instr(@a,[:digit:]{2,},1,2)--------------------------------------|regexp_instr(@a,[:digit:]{2,},1,2)|--------------------------------------|50|--------------------------------------1rowinset(0.00sec)
那我們在看看對多字節字符支持如何。
mysql
mysqlgtset@a美國俄羅斯日本北京上海深圳廣州北京上海武漢東莞北京青島北京
QueryOK,0rowsaffected(0.00sec)
mysqlgtselectregexp_instr(@a,北京,1,1)
-------------------------------
|regexp_instr(@a,北京,1,1)|
-------------------------------
|17|
-------------------------------
1rowinset(0.00sec)
mysqlgtselectregexp_instr(@a,北京,1,2)
-------------------------------
|regexp_instr(@a,北京,1,2)|
-------------------------------
|29|
-------------------------------
1rowinset(0.00sec)
mysqlgtselectregexp_instr(@a,北京,1,3)
-------------------------------
|regexp_instr(@a,北京,1,3)|
-------------------------------
|41|
-------------------------------
1rowinset(0.00sec)
那總結下,這里我提到了MySQL8.0的兩個最有用的正則匹配函數regexp_replace和regexp_instr。針對以前類似的場景算是有一個完美的解決方案。