Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7809961
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 2, 20262026-06-02T03:36:16+00:00 2026-06-02T03:36:16+00:00

I have some data that includes a column with delimited data. There are multiple

  • 0

I have some data that includes a column with delimited data. There are multiple records in the same column essentially:

A0434168.A2367943.A18456972.A0135374.A0080362.A0084546.A0100991.A0064071.A0100858

I’m trying to split up the data in this column into separate rows in another table. The values are of variable length, and delimited by periods. I’ve been attempting to create a lookup table for this data, using a cursor. Due to the volume of data, the cursor is unreasonably slow.

My cursor looks like the following:

DECLARE @ptr nvarchar(160)
DECLARE @aui nvarchar(15)
DECLARE @getmrhier3 CURSOR 

SET @getmrhier3 = CURSOR FOR
    SELECT  cast(ptr as nvarchar(160)),aui
    FROM    mrhier3
    FORWARD_ONLY
OPEN @getmrhier3
FETCH NEXT
    FROM @getmrhier3 INTO @ptr, @aui

WHILE @@FETCH_STATUS = 0
BEGIN
    if(len(@ptr) > 0)
    begin
        if(charindex('.',@ptr) > 0)
        begin
            insert into mrhierlookup(hieraui,aui)
            values      (substring(@ptr,0,charindex('.',@ptr)),@aui)
            
            update  mrhier3
            set     ptr = substring(@ptr,charindex('.',@ptr)+1,LEN(@ptr))
            where   aui = @aui 
              and   ptr = @ptr
        end
        else
        begin
            insert into mrhierlookup(hieraui,aui)
            values      (@ptr,@aui)
            
            update  mrhier3
            set     ptr = ''
            where   aui = @aui 
              and   ptr = @ptr
        end
    end
    FETCH NEXT
        FROM @getmrhier3 INTO @ptr, @aui
END

CLOSE       @getmrhier3
DEALLOCATE  @getmrhier3

The current version of the cursor just works on the leading value of the column. All lengths are arbitrary. The column is at most ~150 characters long.

With the current dataset, building the lookup table will likely take days. It will have several million records.

Is there a better way to efficiently (quickly) parse out this data into a separate table for the purpose of performing join operations more quickly?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-02T03:36:19+00:00Added an answer on June 2, 2026 at 3:36 am

    Create a split function:

    CREATE FUNCTION dbo.SplitStrings(@List NVARCHAR(MAX))
    RETURNS TABLE
    AS
       RETURN ( SELECT Item FROM
           ( SELECT Item = x.i.value('(./text())[1]', 'nvarchar(max)')
             FROM ( SELECT [XML] = CONVERT(XML, '<i>'
             + REPLACE(@List, '.', '</i><i>') + '</i>').query('.')
               ) AS a CROSS APPLY [XML].nodes('i') AS x(i) ) AS y
           WHERE Item IS NOT NULL
       );
    GO
    

    Then get rid of all the cursor and looping nonsense and do this:

    INSERT dbo.mrhierlookup
    (
      heiraui,
      aui
    )
    SELECT s.Item, m.aui
      FROM dbo.mrhier3 AS m
      CROSS APPLY dbo.SplitStrings(m.ptr) AS s
    GROUP BY s.Item, m.aui;
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

We have our own data streaming algorithm that include some metadata+records+fields values. Currently we
I have some data that won't printf.... echo works, but not printf There is
I have some data that I am displaying in 3 column format, of the
I have some data that looks something like this... +----------+----------+----------+ | Column 1 |
I have some data which is stored in a VARCHAR(MAX) column that contains the
I have some data that I would like to visualize. Each byte of the
I have some data that has various attributes and I want to hierarchically group
I have some data that I have to display as a table. I think
I have some data that comes regularily as a dump from a data souce
I have some data that I have to serialize to JSON. I'm using JSON.NET.

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.