我希望这个问题不会让人难以理解,但这里也是如此。
我的查询使用 ST角色设置的 STUFF()运算符。 角色的输出为:
Main Administrator, Per Admin, Coordinator
现在我希望在我的查询中使用角色。 AND 属性如下:
Select
*, STUFF(blah blah...) AS Roles
FROM
table AS T1
INNER JOIN table2 AS T2
ON T1.user = T2.user
Where
....
AND
Roles = 'Per Admin'
然而,有两件事是错的。
1)我无法使用"角色"在 AND 操作符中,说明错误是'无效的列名'角色'。
2)一旦我上述工作#1,我需要能够在列出的角色中找到每个管理员。我想它可能涉及某种类型的 string_split 或类似的东西?
SQL大师的帮助会很棒:)
答案 0 :(得分:1)
您可以使用子查询或cte:
where ',' + cte.roles + ',' like '%,' + 'Per admin' + ',%'
如果你想在其他角色中找到这个角色,那么就像这样:
sorted([dictionnary],[function])
答案 1 :(得分:1)
尝试使用以下查询。
;With cte_1
AS
(Select T1.User, ..other columns.., STUFF(blah blah...) AS Roles
FROM table AS T1
INNER JOIN table2 AS T2
ON T1.user = T2.user )
Select *
From cte_1
Where Roles like '%Per Admin%'
答案 2 :(得分:1)
您可以在查询中添加EXISTS并复制STUFF查询或类似内容,并在EXISTS中添加过滤器。
Select
*, STUFF(blah blah...) AS Roles
FROM
table AS T1
INNER JOIN table2 AS T2
ON T1.user = T2.user
Where
....
AND
EXISTS (SELECT 1 FROM blahblah WHERE RoleName = 'Per Admin')