TP5 like模糊查詢

2021-08-08 19:38:51 字數 2183 閱讀 2550

$rs=db::name('school')->where($type,'like',"%%")->order('id desc')->limit($limit)->page($page)->select();
出處:

一、tp5.1版本

if($sotitle)else

} $where['level'] = 1;

$rs1=db::name('column')->

where($where)->select();

注意,v5.1.7+版本陣列方式如果使用exp查詢的話,一定要用raw方法。

db::table('think_user')

->where([

['name', 'like', 'thinkphp%'],

['title', 'like', '%thinkphp'],

['id', 'exp', db::raw('>score')],

['status', '=', 1],

])->select();

陣列查詢方式,確保你的查詢陣列不能被使用者提交資料控制,使用者提交的表單資料應該是作為查詢陣列的乙個元素傳入,如下:

db:

:table('think_user')

->where([

['name', 'like', $name . '%'],

['title', 'like', '%' . $title],

['id', '>', $id],

['status', '=', $status],

])->select();

注意,相同的字段的多次查詢條件可能會合併,如果希望某乙個where方法裡面的條件單獨處理,可以使用下面的方式,避免被其它條件影響。

$map = [

['name', 'like', 'thinkphp%'],

['title', 'like', '%thinkphp'],

['id', '>', 0],

];db::table('think_user')

->where([ $map ])

->where('status',1)

->select();

生成的sql語句為:

select * from

`think_user`

where ( `name`

like

'thinkphp%'

and`title`

like

'%thinkphp'

and`id` > 0 ) and

`status` = '1'

如果使用下面的多個條件組合

$map1 = [

['name', 'like', 'thinkphp%'],

['title', 'like', '%thinkphp'],

];$map2 = [

['name', 'like', 'kancloud%'],

['title', 'like', '%kancloud'],

];

db::table('think_user')

->whereor([ $map1, $map2 ])

->select();

生成的sql語句為:

select * from

`think_user`

where ( `name`

like

'thinkphp%'

and`title`

like

'%thinkphp' ) or ( `name`

like

'kancloud%'

and`title`

like

'%kancloud' )

善用多維陣列查詢,可以很方便的拼裝出各種複雜的sql語句

引用:

like 模糊查詢

sql 模糊查詢 逗號,在sql中like中不需要轉義,但是如果 在sql中的某個欄位值用 分隔資料,需要獲取資料的時候直接把 拆分成資料,獲得乙個資料的list。例如 需要查詢某欄位是否包含乙個值,111是否存在於1111,2111,1112,1121,1113這個欄位中 因為根據 逗號分開,要求...

like模糊查詢

逗號,在sql中like中不需要轉義,但是如果 在sql中的某個欄位值用 分隔資料,需要獲取資料的時候直接把 拆分成資料,獲得乙個資料的list。例如 需要查詢某欄位是否包含乙個值,111是否存在於1111,2111,1112,1121,1113這個欄位中 因為根據 逗號分開,要求的答案是 不在字段...

Oracle 模糊查詢like

在這個資訊量劇增的時代,如何幫助使用者從海量資料中檢索到想要的資料,模糊查詢是必不可少的。那麼在 中模糊查詢是如何實現的呢?一 我們可以在where子句中使用like關鍵字來達到oracle模糊查詢的效果 在where子句中,可以對datetime char varchar欄位型別的列用like關鍵...