Quantcast
Channel: Extract values from the String filed in SQL server
Viewing all articles
Browse latest Browse all 34

Extract values from the String filed in SQL server

$
0
0

Tried both solutions in one batch (and displayed the actual execution plan just to see the winner):

declare @t table (ID int identity(1,1) primary key, htmlString nvarchar(max))
insert into @t (htmlString) 
values ('Number of Sales: <Area="ABC" Number="1012,1013,1014,1015">4</a><ZZ>END'),
('Number of Sales: <Area="CBA" Number="1011,1012,1013,1014,1015,1016,1017,1018,1019,1020">10</a><YY>END'),
('Number of Sales: <Area="XBA" Number="">0</a><XX>END'),
('No Sales were happened: SPANISH<UV>END')




;with cte as (
select *, 
substring(htmlString, NULLIF(patindex('% Number="%">%', htmlString),0) +  len(' Number="'), len(htmlString)) as OrderNumbers,
substring(htmlString, NULLIF(patindex('%">%', htmlString),0) +  2, len(htmlString)) as NumberStart

from @t)

select Id, htmlString,
NULLIF(ISNULL(substring(OrderNumbers, 1, NULLIF(PATINDEX('%">%', OrderNumbers),0)-1), 'N/A'),'') as OrderNumbers,

ISNULL(substring(NumberStart, 1, NULLIF(PATINDEX('%</a>%', NumberStart),0)-1), 'N/A') as [Values]

from cte

;WITH rs AS
(
	SELECT *
		, TRY_CAST(REPLACE(LEFT(htmlString, PATINDEX('%</a>%', htmlString) + LEN('</a>')-1)
			, 'Number of Sales: <', '<a ') AS XML) AS xmldata
	FROM @t
)
SELECT ID --, xmldata
	, xmldata.value('(/a/@Number)[1]', 'VARCHAR(1024)') AS [OrderNumbers]
	, xmldata.value('(/a/text())[1]', 'INT') AS [Values]
FROM rs;


Looking for new opportunities

For every expert, there is an equal and opposite expert. - Becker's Law


My blog

My TechNet articles

Viewing all articles
Browse latest Browse all 34

Latest Images

Trending Articles





Latest Images