【发布时间】:2021-08-02 00:13:44
【问题描述】:
下面是我用来获取一些信息的 SQL 查询。此信息中有一个 XML 列。我想阅读这个 XML 并在 括号内解析出所需的 ID。下面的这个查询可以做到这一点,但我正在寻找一种更简洁的方法[如果它存在]:
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'
XML strutor 如下所示:
<Ind>
<ABC>some value here</ABC>
</Ind>
部分:
REPLACE(
REPLACE(
CONVERT(
VARCHAR(MAX),
tblEM.[Custom].query('/Individual/ABC')
)
, '<ABC>'
, ''
)
,'</ABC>'
,''
) AS ABC
是我想要替换的可能更简单的类型,即从 XML 的开头和结尾删除 。
我希望能够使用 /]*>/g 进行一种正则表达式替换,以减少查询长度。
我使用的是 SQL 版本 13.0.5103.6。
那么有什么办法可以清理替换查询区吗?
【问题讨论】:
标签: sql sql-server regex xml xml-parsing