【散分】【技術分享】騷操作:利用sql里面的like陳述句實作精確查找—查詢一個session用戶id是否在某個欄位的字串里面
如題,不敢獨享,分享出來,也許有人用的上。
【問題描述】
如何用sql陳述句查詢一個session用戶id是否在一個表的某個欄位的字串里面。
如:我的資料庫bbs表有一個欄位名為arrayuserid,存放若干用戶id號的一個陣列,值為1,10,20,31,14,25,36。
我想查詢用戶id=1 (假設session("userid")=1)是否在這個陣列里的記錄。
【我的兩種寫法】
一、 sql="SELECT * FROM bbs where arrayuserid like '%"&session("userid")&"%' "
二、 sql="SELECT * FROM bbs where "&session("userid")&" in arrayuserid"
【錯誤分析】
很顯然,上述兩種寫法都不能實作上述要求。
第一種會將id帶1(假設session("userid")=1)的記錄都找出來,因為like陳述句里面的“%”表示通配符。
第二種找不到任何記錄。經過測驗,in陳述句支持這種寫法:sql="SELECT * FROM bbs where "&session("userid")&" in (1,10,20,31,14,25,36)" ,但是這樣沒法實作庫查詢。請問高手第二種in陳述句寫法如果修改才可用?麻煩跟貼補充,謝謝!
【正確寫法】
問了下度娘,有高人給出下面的寫法:
sql = "SELECT * FROM a where ','+arrayuserid+',' like '%,"&Session("userid")&",%'"
相當于是構造了這樣的like:
,1,10,20,31,14,25,36, like ,1,
這樣利用構造的變數結合like陳述句,無論session("userid")在陣列的開頭還是結尾,都能實作精確查找,而不會匹配到所有帶1(假設session("userid")=1)的資料,確實太高明了!
uj5u.com熱心網友回復:
散分,大家看不上么?怎么沒有人回復呢
uj5u.com熱心網友回復:
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/78423.html
標籤:ASP
上一篇:請問下有沒有類似activereportsjs帶在線設計的前端報表組件?
下一篇:每日一句前端英語翻譯
