Click here to Skip to main content
15,902,938 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
Dear Sir/Madam,

iam having one row containing
563/90, Chitragupta Nagar | Alambagh | Lucknow | Uttar Pradesh | India | 226005
output should be
CSS
ADDRESS:Chitragupta Nagar
Alambagh
Lucknow
STATE:Uttar Pradesh
COUNTY:India
PINCODE:226005


how to do this in sql query. kindly help me
Posted
Comments
RelicV 14-Jun-13 2:49am    
Does this requirement needed only for one record?
gvprabu 14-Jun-13 6:12am    
See if some records didn't have Street or some other values then values will be like "563/90, Chitragupta Nagar | | Lucknow | Uttar Pradesh | India | 226005" Right...U need to add the Details like Address, Street , City ect... right
gvprabu 14-Jun-13 6:41am    
I gave the solution... But I am not sure, It will be the best for all cases... See if Street is not there then "| Street: | " like this data will Update. So check with your actual Data

Hi,

Try like this....
SQL
DECLARE @String VARCHAR(1000), @CodePos INT

SELECT @String='563/90, Chitragupta Nagar | Alambagh | Lucknow | Uttar Pradesh | India | 226005', @CodePos=1
PRINT 'NO:563/90, ADDRESS:Chitragupta Nagar | STREET:Alambagh | CITY: Lucknow |STATE: Uttar Pradesh | COUNTRY : India | PINCODE: 226005'
SELECT @String='NO:'+REPLACE(@String,',',', ADDRESS:')
SELECT @CodePos=CHARINDEX( '|',@String,1)
SELECT @String=STUFF(@String,@CodePos+2,0,'STREET: ') --Street
SELECT @CodePos=CHARINDEX( '|',@String,@CodePos+2)
SELECT @String=STUFF(@String,CHARINDEX( '|',@String,@CodePos)+2,0,'CITY: ') -- City
SELECT @CodePos=CHARINDEX( '|',@String,@CodePos+2)
SELECT @String=STUFF(@String,CHARINDEX( '|',@String,@CodePos)+2,0,'STATE: ') -- State
SELECT @CodePos=CHARINDEX( '|',@String,@CodePos+2)
SELECT @String=STUFF(@String,CHARINDEX( '|',@String,@CodePos)+2,0,'COUNTRY: ') -- Country
SELECT @CodePos=CHARINDEX( '|',@String,@CodePos+2)
SELECT @String=STUFF(@String,CHARINDEX( '|',@String,@CodePos)+2,0,'PINCODE: ') -- Pincode
PRINT @String

-- Note : I am not sure about the Query because If any changes in your Source Data then we need to change the Query.

Regarrds,
GVPrabu
 
Share this answer
 
Create this function...
SQL
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[ParseValues]
(@String varchar(8000), @Delimiter varchar(max) )
RETURNS @RESULTS TABLE (ID int identity(1,1), Val varchar(max))
AS
BEGIN
    DECLARE @Value varchar(max)
    WHILE @String is not null
    BEGIN
        SELECT @Value=CASE WHEN PATINDEX('%'+@Delimiter+'%',@String) >0 THEN LEFT(
          @String,PATINDEX('%'+@Delimiter+'%',@String)-1) ELSE @String END,
          @String=CASE WHEN PATINDEX('%'+@Delimiter+'%',@String) >0 THEN SUBSTRING(
          @String,PATINDEX('%'+@Delimiter+'%',@String)+LEN(@Delimiter),LEN(@String)) ELSE NULL END
        INSERT INTO @RESULTS (Val)
        SELECT @Value
    END
RETURN
END

now query...
SQL
DECLARE @String VARCHAR(1000), @CodePos INT
 
SELECT @String='NO:563/90, ADDRESS:Chitragupta Nagar | STREET:Alambagh | CITY: Lucknow |STATE: Uttar Pradesh | COUNTRY : India | PINCODE: 226005'

select val from dbo.parsevalues(@String ,'|');

Happy Coding!
:)
 
Share this answer
 
sorry, small change in output it should be --NO:563/90, ADDRESS:Chitragupta Nagar | STREET:Alambagh | CITY: Lucknow |STATE: Uttar Pradesh | COUNTRY : India | PINCODE: 226005
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900