Experts! How do I strip this string that i have to separate columns? it can be view, that will be uploaded into table. STRING: DCRRART3=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=SDG.fgbvc.com)(PORT=3321))(CONNECT_DATA=(SERVICE_NAME=DCEYWRT3.NC.HGNB.COM))) separate column entries will look like this: dbName: DCEQART3 DESCRIPTION: null ADDRESS: null PROTOCOL: TCP HOST: SDG.fgbvc.com PORT: 3321 CONNECT_DATA: null SERVICE_NAME: DCEYWRT3.NC.HGNB.COM Thanks a million!
Set @valString = 'DCRRART3=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=SDG.fgbvc.com)(PORT=3321))(CONNECT_DATA=(SERVICE_NAME=DCEYWRT3.NC.HGNB.COM)))' set @cnt = 1 While @cnt < 9 begin
If charindex('(',@valString) < charindex(')',@valString) begin if charindex('(',@valString)- Charindex('=',@valString) > 0 begin set @Substring = substring(@valstring,Charindex('=',@valString)+1,charindex('(',@valString)- Charindex('=',@valString)-1) Set @substr2 = substring(@valstring,1,Charindex('(',@valString)) Set @valstring = Replace(@valstring,@substr2,'') set @cnt = @cnt + 1 --select @valstring print 'Value ' + cast(@cnt as varchar(10)) + ' :' + @Substring end else begin Set @valstring = substring(@valstring,2, 1000) end end else begin if charindex('(',@valString)- Charindex('=',@valString) > 0 begin set @Substring = substring(@valstring,Charindex('=',@valString)+1,charindex(')',@valString)-Charindex('=',@valString)-1) Set @substr2 = substring(@valstring,1,Charindex(')',@valString)) Set @valstring = Replace(@valstring,@substr2,'') set @cnt = @cnt + 1 --select @valstring Print 'Value ' + cast(@cnt as varchar(10)) + ' :' + @Substring end else begin Set @valstring = substring(@valstring,2, 1000) end end
Well Actually It is neither, but Probably easiest to be turned into a stored proc. I didn't add the acual code to insert it in the tables, But that can be done conditionally, with a little tweaking. If you need additional help, let me know !
What is the Table it needs to go in Called and What does it look like... Maybe you can script it. I will then accorginly finish this stored procedure for you !
field name 'DbName' is whatever goes at the beginning of the string. example: DCRRART3=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=SDG.fgbvc.com)(PORT=3321))(CONNECT_DATA=(SERVICE_NAME=DCEYWRT3.NC.HGNB.COM))) 'DCRRART3' is the data for column 'DbName'
create procedure usp_parse_db_values @ValString varchar(8000) as
--Execute the following to test ---- usp_parse_db_values 'DCRRART3=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=SDG.fgbvc.com)(PORT=3321))(CONNECT_DATA=(SERVICE_NAME=DCEYWRT3.NC.HGNB.COM)))' Declare @db varchar(100) Declare @Substring varchar(100) Declare @LastPOs integer declare @cnt integer Declare @Substr2 varchar(100)
set @Substr2 = ''
set @cnt = 1 While @cnt <> 9 begin
set @Substring = '' set @db = substring(@valstring,1,Charindex('=',@valString)-1) If charindex('(',@valString) < charindex(')',@valString) begin if charindex('(',@valString)- Charindex('=',@valString) > 0 begin set @Substring = substring(@valstring,Charindex('=',@valString)+1,charindex('(',@valString)- Charindex('=',@valString)-1) Set @substr2 = substring(@valstring,1,Charindex('(',@valString)) Set @valstring = Replace(@valstring,@substr2,'')
--select @valstring --print 'Value ' + cast(@cnt as varchar(10)) + ' :' + @Substring set @cnt = @cnt + 1 end else begin Set @valstring = substring(@valstring,2, 1000) end end else begin if charindex('(',@valString)- Charindex('=',@valString) > 0 begin set @Substring = substring(@valstring,Charindex('=',@valString)+1,charindex(')',@valString)-Charindex('=',@valString)-1) Set @substr2 = substring(@valstring,1,Charindex(')',@valString)) Set @valstring = Replace(@valstring,@substr2,'')
--select @valstring --Print 'Value ' + cast(@cnt as varchar(10)) + ' :' + @Substring set @cnt = @cnt + 1 end else begin Set @valstring = substring(@valstring,2, 1000) end end Print @db print '@valstring = ' + @Substring if @cnt -1 = 1 begin insert into ora_service (dbname) values (@db) end if @cnt -1 = 2 begin update ora_service set description = @Substring where dbname = @db end if @cnt -1 = 3 begin update ora_service set ADDRESS = @Substring where dbname = @db end if @cnt -1 = 4 begin update ora_service set PROTOCOL = @Substring where dbname = @db end if @cnt -1 = 5 begin update ora_service set HOST = @Substring where dbname = @db end if @cnt -1 = 6 begin update ora_service set PORT = @Substring where dbname = @db end if @cnt -1 = 7 begin update ora_service set connection = @Substring where dbname = @db end if @cnt - 1 = 8 begin update ora_service set service = @Substring where dbname = @db set @cnt = @cnt + 1 end
the data are records that come from another table 'ORA' with one column 'ora'. How and where I refer to that table? btw, outcome of stor proc looks like it inserts dbname only, the rest looks weird and gives errors. if you run it, you'll see.
I ran it and it works on my side, Maybe it will need minor adjustments, but unless I can get access to your database, I will not be able to fix those. This is where you will have to make minor changes yourself.