執行資料庫查詢時,有完整查詢和模糊查詢之分。
一般模糊語句格式如下:
select 字段 from 表 where 某欄位 like 條件;
其中,關於條件,sql提供了四種匹配模式:
可以匹配任意型別和任意長度的字元,有些情況下若是中文,請使用兩個百分號(%%)表示。
select * from flow_user where username like '%王%';
將會把flow_user這張表裡面,列名username中含有「王」的記錄全部查詢出來。
如果需要找到flow_user這張表裡面,欄位username中既有「唐」,又有「英」的記錄,可以使用and條件
select * from flow_user where username like '%英%' and username like '%唐%';
則可以查詢出來所有包含「英」和「唐」的所有內容,「英」和「唐」所在的前後位置無所謂。
select * from flow_user where username like '%英%唐%';
可以查出來包含「英唐」的內容,但是查不出來「唐英」的內容。
匹配單個任意字元,它常用來限制表示式的字元長度
select * from flow_user where username like '_英_';
只能找到「王英琨」這樣username為三個字且中間乙個字是「英」的內容。
select * from flow_user where username like '英__';
只能找到「英雄點」這樣username為三個字且第乙個字是「英」的內容。
指定乙個字元、字串或範圍,要求所匹配的物件為他們中的任乙個。
select * from flow_user where username like'[王李張]飛';
將找出「王飛」「李飛」「張飛」(而不是「張王李飛」)。
如內有一系列字元(01234,abcde之類的)則可略寫為「0-4」,「a-e」:
select * from flow_user where username like '老[0-9]';
將找出「老1」、「老2」、……、「老9」;
oracle 10g以上的版本用法為:
select * from flow_user where regexp_like(username, '[張王李]飛');
其取之和相同,但它所要求匹配物件為指定字元以外的任乙個字元。
select * from flow_user where username like'[^王李張]飛';
將找出不是「王飛」「李飛」「張飛「的」趙飛「、」吳飛「等。
注:oracle like 不支援正則,你可以使用支援like的正則regexp_like
由於萬用字元的緣故,導致查詢特殊字元「%」、「_」、「[」的語句無法正常實現,把特殊字元用「」括起來便可以正常查詢。
function sqlencode(str)
str=replace(str,」[「,」[」) 『此句一定要在最前
str=replace(str,」「,」」)
str=replace(str,」%」,」[%]」)
sqlencode=str
end function
資料庫模糊查詢
一 模糊查詢 運算子語法描述 is null a is null 如果操作符為null,則結果為真 is not null a is not null 如果操作符不為null,則結果為真 between a between b and c 若a在b和c之間,則結果為真 like a like b 如...
資料庫查詢和模糊查詢
表示乙個字元,他表示匹配任意乙個字元 where name like 唐 表示查詢名字已唐開頭,且後面只有乙個字元 表示多個字元,可以匹配多個字元 where name like 唐 表示查詢名字已唐開頭的,無論後面有幾個字元 where name like 唐 表示查詢名字中含有唐字的 conca...
資料庫組合查詢和模糊查詢
搜尋條件 排序 得到所有捲菸 param is promote 0表示是 1表示捲菸列表 param pricevalues 排序 1 降序,2公升序 param price 批發價 預設為 不限 param cigarettefactory 菸廠 預設為 不限 param activity 活動 ...