這個的標題有點下,很難用標題點出要分享的內容,這個經驗相信有非常多人都會遇到,只是各自的解法不同,這次所以提的是當資料庫內所儲存的資料是一組多筆記錄組成的字串,例如:


 


TableName : UserMenuRight


資料型態


欄位名稱


欄位說明


Int PK


UserID


使用者代號


Nvarchar


UserRight


使用者權限


 


資料內容


UserID


UserRight


1


A01,A011,A02,A03,A021


2


A011, A03


3


A02,A021,A01


 


 


當我們要找UserRight這欄位的內容含有A01的資料時,SQL語法要怎麼下,才能找到A01,又不會帶出A011,而且A01也可能是字串的最前面,也可能是最後面,也可能在中間,那要怎麼去下條件?


 


  我這是有個做法可以很簡單的去解決這類型的問題,直接在Script裡解決即可,以這個問題來說,語法可以這麼下:


Oracle :


Select * from UserMenuRight where ','|| UserRight ||',' like '%,A01,%'


Sql


Select * from UserMenuRight where ','+ UserRight +',' like '%,A01,%'


 


眼尖的人應該已經看出來了,用此語法,因為資料庫的資料已先前後加逗號,所以就會是A01 , A01,A01,A02,A011,A03,A021, A01,A02,A011,A03,A021, 當我們的查詢條件下like ‘%,A01,%’,不管它在前//後或單一,都可以找到.所以查詢結果就會找到第1,3筆的資料.,第二筆就不會帶出來了.


 


或許這不是最好的方法,但這也是一種解法,如果有其它更好的方式,歡迎分享~



arrow
arrow
    全站熱搜
    創作者介紹
    創作者 jeffyeh 的頭像
    jeffyeh

    jeffyeh

    jeffyeh 發表在 痞客邦 留言(0) 人氣()