Capturing characters between two instances of another character

  • I have an interesting situation.

    I need to get the data from between the 8th and 9th instance of the ";" character.

    For instance, I have a data set that looks like this:

    Record 1: 0;0;0;0;22.68;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0

    Record 2: 74.52;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0

    Record 3: 0;0;0;0;23.04;0;0;0;99.84;0;0;0;0;0;0;0;0;0;0;0

    Record 4: 1.08;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0

    Record 5: 1.476;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0

    Record 6: 1.116;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0

    I would need to grab 99.84 from record 3 and 0 from the rest.

    How should I go about doing this?

  • If you have access to the database, you can do this:

    First, you need Jeff Moden's handy DelimitedSplit8K function, which is here[/url].

    Then your query would look something like this:

    SELECT col1, split.ItemNumber, Item=split.Item

    FROM

    (SELECT '0;0;0;0;22.68;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0' AS col1

    UNION ALL

    SELECT '74.52;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0'

    UNION ALL

    SELECT '0;0;0;0;23.04;0;0;0;99.84;0;0;0;0;0;0;0;0;0;0;0') x

    CROSS APPLY dbo.DelimitedSplit8K(col1,';') split

    WHERE split.ItemNumber = 9;

    Otherwise, you'd use the SPLIT function in SSRS.

    =Split("0;0;0;0;23.04;0;0;0;99.84;0;0;0;0;0;0;0;0;0;0;0",";").GetValue(4)

    returns 23.04

  • That did it!

    Thank you very much!

Viewing 3 posts - 1 through 2 (of 2 total)

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