Retrieve data contained in a comma-delimited list of values Warning!

by Yugolancer


Posted on Saturday, June 3, 2017



Say that you have a comma-separated String containing user IDs like following:

String userIDs = "1,2,5,8,23,67,101";

and that you want to fetch those users without splitting and looping their IDs.

Usually you do use CharIndex to search the expression:

command.CommandText = 
    "SELECT * FROM Users WHERE  CharIndex(CAST(userID AS varchar(8)) + ',', + @userIDs) > 0";
command.Parameters.AddWithValue"@userIDs", userIDs;

However if you execute the above query the last ID will be omitted YEAH it will be indeed because it checks against value + comma which does not match when it comes to 101.

FIX: add the missing comma to the end of the string:

command.Parameters.AddWithValue"@userIDs", userIDs + ",";

Hope this helps someone!


Copyright © ASPNETer 2006 - 2016