How to use a table value function that splits a string

  • I have a TVF that takes two parameters, string and delimter but, I don't know how to pass the field values into the function in order to get my resulting table of parsed data.

    Let's say that this query pulls the delimited data.

    select StringToBeParsed

    from Table1

    How do I pass this field, StringToBeParsed, into the function, dbo.fnSplitString(@String, @delimiter). The delimiter is a pipe(|).

  • NineIron (7/13/2016)


    I have a TVF that takes two parameters, string and delimter but, I don't know how to pass the field values into the function in order to get my resulting table of parsed data.

    Let's say that this query pulls the delimited data.

    select StringToBeParsed

    from Table1

    How do I pass this field, StringToBeParsed, into the function, dbo.fnSplitString(@String, @delimiter). The delimiter is a pipe(|).

    I don't know what your split function is doing but typically this is done with cross apply. Take a look at the article in my signature about splitting strings.

    My guess is you want something along these lines.

    select t.*, s.*

    from Table1 t

    cross apply dbo.fnSplitString(t.StringToBeParsed, '|') s

    _______________________________________________________________

    Need help? Help us help you.

    Read the article at http://www.sqlservercentral.com/articles/Best+Practices/61537/ for best practices on asking questions.

    Need to split a string? Try Jeff Modens splitter http://www.sqlservercentral.com/articles/Tally+Table/72993/.

    Cross Tabs and Pivots, Part 1 – Converting Rows to Columns - http://www.sqlservercentral.com/articles/T-SQL/63681/
    Cross Tabs and Pivots, Part 2 - Dynamic Cross Tabs - http://www.sqlservercentral.com/articles/Crosstab/65048/
    Understanding and Using APPLY (Part 1) - http://www.sqlservercentral.com/articles/APPLY/69953/
    Understanding and Using APPLY (Part 2) - http://www.sqlservercentral.com/articles/APPLY/69954/

  • NineIron (7/13/2016)


    I have a TVF that takes two parameters, string and delimter but, I don't know how to pass the field values into the function in order to get my resulting table of parsed data.

    Let's say that this query pulls the delimited data.

    select StringToBeParsed

    from Table1

    How do I pass this field, StringToBeParsed, into the function, dbo.fnSplitString(@String, @delimiter). The delimiter is a pipe(|).

    Please post the code for that function. I've found that many are seriously lacking in the areas of performance and resource usage.

    --Jeff Moden


    RBAR is pronounced "ree-bar" and is a "Modenism" for Row-By-Agonizing-Row.
    First step towards the paradigm shift of writing Set Based code:
    ________Stop thinking about what you want to do to a ROW... think, instead, of what you want to do to a COLUMN.
    "Change is inevitable... change for the better is not".

    Helpful Links:
    How to post code problems
    How to Post Performance Problems
    Create a Tally Function (fnTally)
    Intro to Tally Tables and Functions

  • Here's the function. I got it from your site. I think the blog author's last name is Patel.

    CREATE FUNCTION [dbo].[fnSplitString]

    (

    @string NVARCHAR(MAX),

    @delimiter CHAR(1)

    )

    RETURNS @output TABLE(splitdata NVARCHAR(MAX)

    )

    BEGIN

    DECLARE @start INT, @end INT

    SELECT @start = 1, @end = CHARINDEX(@delimiter, @string)

    WHILE @start < LEN(@string) + 1 BEGIN

    IF @end = 0

    SET @end = LEN(@string) + 1

    INSERT INTO @output (splitdata)

    VALUES(SUBSTRING(@string, @start, @end - @start))

    SET @start = @end + 1

    SET @end = CHARINDEX(@delimiter, @string, @start)

    END

    RETURN

    END

  • This is some test data. Not all rows will have a delimited string value.

    create table #Test

    (

    QuerySetID int,

    QueryNumberID int,

    QueryValue varchar(100)

    )

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,15,'{Taxi Voucher}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,7,'{Assessment/Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,3,'{Referred to Outside Agenc}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,3,'{Referred to Outside Agenc}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Return to Prior Services}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Primary Care Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Return to Prior Services}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,3,'{Referred to Financial Con}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{AA/NA|Return to Prior Services}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{AA/NA|Return to Prior Services}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Return to Prior Services}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Skilled Nursing Facility}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Skilled Nursing Facility}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Skilled Nursing Facility}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Skilled Nursing Facility}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Skilled Nursing Facility}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Skilled Nursing Facility}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,3,'{Long Term Care Applicatio}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Primary Care Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,15,'{Taxi Voucher}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,9,'SW Services not Needed')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Primary Care Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,15,'{Taxi Voucher}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,7,'{Assessment/Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Primary Care Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,15,'{Taxi Voucher}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,5,'{Patient Advocacy Fund}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Inpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Dual Diagnosis Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Inpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Inpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Return to Prior Services}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Return to Prior Services}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Return to Prior Services}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'Y')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Primary Care Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Primary Care Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,3,'{Referred to Financial Con}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Palliative Care}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Return to Prior Services}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Dual Diagnosis Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Primary Care Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Return to Prior Services}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Return to Prior Services}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Palliative Care}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'Y')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Primary Care Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Elder Services}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Elder Services}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Elder Services}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Elder Services}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Primary Care Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,15,'{Taxi Voucher}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Primary Care Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,15,'{Taxi Voucher|Patient Advocacy Fund}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,15,'{Taxi Voucher|Patient Advocacy Fund}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'Y')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,15,'{Taxi Voucher|Patient Advocacy Fund}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,15,'{Taxi Voucher|Patient Advocacy Fund}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'Y')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,15,'{Bus/Train}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Primary Care Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,7,'{Assessment/Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Return to Prior Services}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'Y')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Primary Care Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,7,'{Assessment/Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Inpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Inpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Homeless Shelter}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Homeless Shelter}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'Y')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Primary Care Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,3,'{Referred to Financial Con}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,5,'{Patient Advocacy Fund}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Return to Prior Services}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,15,'{Bus/Train}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,9,'Left AMA')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{AA/NA|Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{AA/NA|Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|End of Life Support}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|End of Life Support}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|End of Life Support}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling|Primary Care Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling|Primary Care Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Hospice Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Return to Prior Services}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{AA/NA}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,15,'{Taxi Voucher}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Inpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Dialysis Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Skilled Nursing Facility}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Skilled Nursing Facility}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Skilled Nursing Facility}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,3,'{Long Term Care Applicatio}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,2,'{Child Abuse}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Inpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Homeless Shelter}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Return to Prior Services}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Return to Prior Services}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Return to Prior Services}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{End of Life Support|Hospice Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{End of Life Support|Hospice Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,9,'Discharged Without Being')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,2,'{Elder Abuse}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'Y')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Primary Care Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,3,'{Referred to Financial Con}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Homeless Shelter}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'Y')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Primary Care Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,15,'{Taxi Voucher|Patient Advocacy Fund}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,15,'{Taxi Voucher|Patient Advocacy Fund}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,7,'{Assessment/Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'Y')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Primary Care Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,3,'{Referred to Financial Con}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,7,'{Assessment/Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,2,'{Elder Abuse}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,5,'{BH Indigent Medication}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Return to Prior Services}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,15,'{Taxi Voucher|Patient Advocacy Fund}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,15,'{Taxi Voucher|Patient Advocacy Fund}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Return to Prior Services}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Inpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,15,'{Taxi Voucher}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,5,'{Patient Advocacy Fund}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Homeless Shelter}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,15,'{Bus/Train}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling|Clothing Given}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling|Clothing Given}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{AA/NA|Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{AA/NA|Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Homeless Shelter}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Homeless Shelter}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,9,'Discharged Without Being')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Clothing Given}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Clothing Given}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Clothing Given}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,9,'Discharged Without Being')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,9,'SW Services not Needed')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Primary Care Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Skilled Nursing Facility}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,3,'{Referred to Financial Con}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Inpatient Program|Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Inpatient Program|Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'Y')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Primary Care Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,5,'{Patient Advocacy Fund}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,15,'{Taxi Voucher}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,7,'{Referral to Community Pro}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'Y')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Hospice Referral|Palliative Care}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Hospice Referral|Palliative Care}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Hospice Referral|Palliative Care}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Hospice Referral|Palliative Care}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,7,'{Assessment/Counseling|Support Regarding Treatme}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,7,'{Assessment/Counseling|Support Regarding Treatme}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Palliative Care}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Palliative Care}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Palliative Care}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,7,'{Assessment/Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Return to Prior Services}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|End of Life Support|Hospice Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|End of Life Support|Hospice Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|End of Life Support|Hospice Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|End of Life Support|Hospice Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,7,'{Assessment/Counseling|Support Regarding Treatme|Referral to Community Pro}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,7,'{Assessment/Counseling|Support Regarding Treatme|Referral to Community Pro}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,7,'{Assessment/Counseling|Support Regarding Treatme|Referral to Community Pro}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,7,'{Referral to Community Pro}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Inpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Inpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Hospice Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Primary Care Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Return to Prior Services}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Hospice Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'Y')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Primary Care Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{C3 Placement}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Elder Services}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Elder Services}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Elder Services}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,4,'{Referred to Outside Legal}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Primary Care Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Primary Care Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,3,'{DTA Referral/EAEDC}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Return to Prior Services}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Hospice Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,7,'{Support Regarding Treatme}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,15,'{Taxi Voucher|Patient Advocacy Fund}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,15,'{Taxi Voucher|Patient Advocacy Fund}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{AA/NA}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Services Declined}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling|Homeless Shelter}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling|Homeless Shelter}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,15,'{Taxi Voucher|Elder Grant}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,15,'{Taxi Voucher|Elder Grant}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,3,'{Referred to Financial Con}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,2,'{Domestic Violence}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,15,'{Taxi Voucher}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,15,'{Taxi Voucher}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,3,'{Referred to Outside Agenc}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,5,'{BH Indigent Medication}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,3,'{Referred to Financial Con}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'N')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,9,'SW Services not Needed')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,10,'{Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Outpatient Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,16,'Y')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,15,'{Taxi Voucher|Patient Advocacy Fund}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,15,'{Taxi Voucher|Patient Advocacy Fund}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Return to Prior Services}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|End of Life Support|Hospice Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|End of Life Support|Hospice Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|End of Life Support|Hospice Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|End of Life Support|Hospice Referral}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,6,'{Geri-Psych Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Community Program}')

    insert into #Test(QuerySetID, QueryNumberID, QueryValue) values(7,17,'{Collateral Contacts|Counseling|Community Program}')

  • The goal is to be able to count each string element to get a total for each.

  • Like Jeff said, there are a lot of those functions out there that are lacking in performance. I haven't tested the function you posted, but just knowing that it's an MTVF tells me that it won't perform very well.

    For a high-performance ITVF string splitter, please check out Jeff's article at http://qa.sqlservercentral.com/articles/Tally+Table/72993/. If nothing else, race it against what you have. My guess is that you'll end up going with DelimitedSplit8K.

  • Ed Wagner (7/14/2016)


    Like Jeff said, there are a lot of those functions out there that are lacking in performance. I haven't tested the function you posted, but just knowing that it's an MTVF tells me that it won't perform very well.

    For a high-performance ITVF string splitter, please check out Jeff's article at http://qa.sqlservercentral.com/articles/Tally+Table/72993/. If nothing else, race it against what you have. My guess is that you'll end up going with DelimitedSplit8K.

    heres a test harness of approx 1M rows......go play and see what you think (not sure if end results are what you require though)

    WHILE

    (

    SELECT COUNT(*)

    FROM #test

    ) < 1000000

    BEGIN

    INSERT INTO #test

    SELECT TOP (10000) QuerySetID,

    QueryNumberID,

    QueryValue

    FROM #test;

    END;

    SELECT COUNT(*) FROM #test

    -- function can be found at the end of this article http://qa.sqlservercentral.com/articles/Tally+Table/72993/

    PRINT '==== DelimitedSplit8K ======'

    SET STATISTICS IO, TIME ON;

    SELECT s.Item,

    COUNT(s.Item)

    FROM #test t

    CROSS APPLY dbo.DelimitedSplit8K(REPLACE(REPLACE(t.QueryValue, '{', ''), '}', ''), '|') s

    GROUP BY s.Item;

    SET STATISTICS IO, TIME OFF;

    PRINT '==== fnSplitString ======'

    SET STATISTICS IO, TIME ON;

    SELECT s.splitdata,

    COUNT(s.splitdata)

    FROM #test t

    CROSS APPLY dbo.fnSplitString(REPLACE(REPLACE(t.QueryValue, '{', ''), '}', ''), '|') s

    GROUP BY splitdata

    SET STATISTICS IO, TIME OFF;

    --DROP TABLE #test

    ________________________________________________________________
    you can lead a user to data....but you cannot make them think
    and remember....every day is a school day

  • I read Jeff's article. Way over my head. My data is relatively small so, the fnSplitString function works pretty quick.

  • Thank you all for your responses.

  • You don't need to understand the inner details of why the faster function is faster to use it. Just grab it from the end of the article and replace your less efficient one.

    "I'm only going short distances, so walking's pretty quick."

    Gail Shaw
    Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
    SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability

    We walk in the dark places no others will enter
    We stand on the bridge and no one may pass
  • NineIron (7/14/2016)


    I read Jeff's article. Way over my head. My data is relatively small so, the fnSplitString function works pretty quick.

    why use something that is "prettty quick" when you can use something that is "nasty quick".

    you may have a small data set today.....but what about the next time you have to do this on another table....maybe that dataset wont be so small.

    I hope you ran the test harness I provided......;-)

    ________________________________________________________________
    you can lead a user to data....but you cannot make them think
    and remember....every day is a school day

  • Good points. You're right. I'll make the change

  • J Livingston SQL (7/14/2016)


    NineIron (7/14/2016)


    I read Jeff's article. Way over my head. My data is relatively small so, the fnSplitString function works pretty quick.

    why use something that is "prettty quick" when you can use something that is "nasty quick".

    you may have a small data set today.....but what about the next time you have to do this on another table....maybe that dataset wont be so small.

    I hope you ran the test harness I provided......;-)

    The thing about data is that it tends to grow over time. It can shrink, but not normally. Once you have a good, highly-performant approach to splitting strings, you'll find that the tool is a good one to have in your toolbox.

Viewing 14 posts - 1 through 13 (of 13 total)

You must be logged in to reply to this topic. Login to reply