Suppose there is a table A which has a column AccessRights which is multivalued( Eg of values in it in this format STOLI,HELP,BRANCH(comma separated string)
Now a stored procedure is written against this table to fetch records based on a AccessRight parameter sent to the SP. Let that parameter be @AccessRights, this is also a comma separated string which may have a value like STOLI,BRANCH,HELPLINE etc
Now I want to compare individual values from the parameter @AccessRights with the column AccessRights.
Current Approach is I split the Comma Separated string(@AccessRights) using a User Defined Function Split. And I get Individual values in a Table variable(Contains only one column "accessGroup"), the individual values are in a Table variable under the column name accessGroup and I use following code in the SP for comparison
Where AccessRights like '%'+accessGroup+'%'
Now if the user passes the parameter (HELP, OLI) instead of( HELP,STOL开发者_JS百科I) the SP will give the output. What should be done for comparison so that that subststring OLI does not give the output for STOLI
Following trick should do it (self-documented):
WHERE (',' + AccessRights + ',') LIKE ('%,' + accessGroup + ',%')
But ideally split both sides into tables tables and compare values.
Split both collections, store them on temporary #tables and join them.
精彩评论