与SQL数据库表中的多值列进行值比较

时间:2010-03-25 10:19:09

标签: sql stored-procedures

假设有一个表A,其AccessRights列是多值的(例如STOLI,HELP,BRANCH(以逗号分隔的字符串)格式的值)

现在针对此表编写存储过程,以根据发送到SP的AccessRight参数获取记录。 让该参数为@AccessRights,这也是一个逗号分隔的字符串,可能有一个像STOLI,BRANCH,HELPLINE等的值

现在我想将参数@AccessRights中的各个值与AccessRights列进行比较。

当前方法是使用用户定义函数拆分拆分逗号分隔字符串(@AccessRights)。 我在Table变量中获得Individual值(只包含一列“accessGroup”),各个值在列名accessGroup下的Table变量中,我在SP中使用以下代码进行比较

Where AccessRights like '%'+accessGroup+'%'

现在,如果用户传递参数(HELP,OLI)而不是(HELP,STOLI),SP将给出输出。 应该做什么进行比较,以便该子串OLI不为STOLI提供输出

2 个答案:

答案 0 :(得分:1)

拆分两个集合,将它们存储在临时#tables上并加入它们。

答案 1 :(得分:1)

以下技巧应该这样做(自我记录):

WHERE (',' + AccessRights + ',') LIKE ('%,' + accessGroup  + ',%')

但理想情况下将双方分成表格表并比较值。