SQL Tip: HowTo Convert Delimited String to Table
Many times we need to deal with lists in T-SQL, for instance we need to have a list of values to pass it to IN clause in SQL. This list is supposed to look like delimited string. However we can not pass it to T-SQL procedure as a string because T-SQL compiler can not interpret delimited string as a list of values.
For MSSQL - the list of values is of table type, so we need to have a tool to convert delimited string to table. The function below does just that. So we are able to pass delimited strings to the procedure, convert this string to table and use it later in SQL IN close or in joins.
create function F_TBL_VALS_FROM_STRING
(@p_str varchar(1000))
returns @tbl table (VAL int)
as
begin
set @p_str = @p_str + ','
declare @p_counter int
declare @p_len int
declare @p_curr_char varchar(1)
declare @p_char varchar(6)
declare @p_num int
set @p_len = len(@p_str)
set @p_counter = 1
set @p_curr_char = ''
set @p_char = ''
-- loop
while @p_counter <= @p_len
begin
set @p_curr_char = substring(@p_str, @p_counter, 1)
if (@p_curr_char <> ',')
begin
set @p_char = @p_char + @p_curr_char
end
else
begin
set @p_num = convert(int, @p_char)
insert into @tbl values(@p_num)
set @p_char = ''
end
set @p_counter = @p_counter + 1
end
return
end
Some raw T-SQL for your consideration...
Sunday, November 30, 2003 1:31 AM