選擇缺少的行我有一個SQL表像下面的使用SQL LIKE
RoleId Roles
------------------------------------------
1 Administrators Viewers Users Managers
2 Administrators Viewers Managers
3 Administrators
4 Viewers
我需要得到一個基於角色的RoleId
的。我將每個角色都視爲一個字符串。
所以,當我使用下面的查詢
SELECT *
FROM Roles
WHERE Roles like '%Administrators Viewers Managers%'
我得到的只有前兩排
RoleId Roles
--------------------------------------------------
1 Administrators Viewers Users Managers
2 Administrators Viewers Managers
但我需要它,因爲它包含了Administrators
和Viewers
太獲取剩餘的行。 我實際上使用存儲過程來提供角色作爲參數。所以它並不總是一樣的。 其動態。我不能使用OR。我需要一個適用於任何參數的解決方案。
IN
和LIKE
子句之間是否有組合?
要不我怎麼能繼續
嗯,這是一個有興趣的方法,但似乎不喜歡一個很好的長期解決方案。我想理想情況下你會有兩張桌子,這會讓你稍後變得更加靈活......即。角色和權限...即。 'ROLES TABLE:roleID 1 = Admin,roleID 2 = Viewer' 'PERMISSIONS TABLE:roleID = 1,view = yes,admin = yes,edit = yes; roleId = 2,view = yes,admin = no,edit = no'。然後你就可以做更復雜的查詢。 – timh 2014-11-25 10:18:38
如何獲得第1行的查詢? – 2014-11-25 10:18:46
上面提供的腳本不會記錄'管理員查看者用戶管理器',因爲'用戶'沒有在您的LIKE子句中指定。如果你的參數是動態的,我會建議DSQL。聲明一個參數,寫出你的查詢並執行。但我不確定如何將參數分成3個(管理員/查看者/管理員)變量。 – PKirby 2014-11-25 10:41:57