Below is the SQL Query I am using in order to get some information. Within this information is an XML column. I am wanting to read this XML and parse out the needed ID inside the <> brackets. This query below does do that but I am looking for a cleaner way of doing it [if it exists]:
SELECT
tblAT.*,
tblA.*,
tblEM.[Custom] AS fullXML,
REPLACE(
REPLACE(
CONVERT(
VARCHAR(MAX),
tblEM.[Custom].query('/Ind/ABC')
)
, '<ABC>'
, ''
)
,'</ABC>'
,''
) AS ABC
FROM
ATable AS tblA
JOIN
LLink AS tblL
ON tblL.A_AID = tblA.AID
JOIN
AssetsT AS tblAT
ON tblAT.AID = tblL.BAID
JOIN
ExternalMetadata AS tblEM
ON tblEM.AID = tblA.AID
WHERE
tblAT.ATID = 12
AND
tblA.AID = 30610
AND
tblA.CreatedDate > '2021-05-11 08:58:00'
The XML strutor looks like this:
<Ind>
<ABC>some value here</ABC>
</Ind>
The part:
REPLACE(
REPLACE(
CONVERT(
VARCHAR(MAX),
tblEM.[Custom].query('/Individual/ABC')
)
, '<ABC>'
, ''
)
,'</ABC>'
,''
) AS ABC
is what I am wanting to replace with perhaps a simpler type of removing the <> from the beginning and the end of the XML.
I was hoping to be able to do a type of regex replace using /<[^>]*>/g in order to lessen the query length.
I am using SQL version 13.0.5103.6.
So is there any way of cleaning up the replace query area?