假设有一个表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提供输出
答案 0 :(得分:1)
拆分两个集合,将它们存储在临时#tables上并加入它们。
答案 1 :(得分:1)
以下技巧应该这样做(自我记录):
WHERE (',' + AccessRights + ',') LIKE ('%,' + accessGroup + ',%')
但理想情况下将双方分成表格表并比较值。