SQL*_*Ben 1 xml sql-server t-sql substring
我只是想知道如何从 XML 列中提取一个整数。目前所有的数字都是 4,下面的查询可以做到。但是这个数字很快就会增长到 10,000 个,这意味着 5 位数,这个查询将无法做到。无论如何,我是否可以动态地从 Xml 列的中间<siteID>和中间取出任何整数</siteID>。任何建议将不胜感激。
SELECT
SUBSTRING(msg, patindex('%[0-9][0-9][0-9][0-9]</siteID>%',msg),4) AS DOMAIN
FROM table a(NOLOCK)
WHERE msg like '<DLR%'
ORDER BY 1 DESC
Run Code Online (Sandbox Code Playgroud)
您应该使用XML 数据类型的value() 方法。
如果您的 XML 结构如下所示:
<DLR>
<siteID>12345</siteID>
</DLR>
Run Code Online (Sandbox Code Playgroud)
您的查询将是
select msg.value('(/DLR/siteID/text())[1]', 'int') as DOMAIN
from dbo.YourTable
Run Code Online (Sandbox Code Playgroud)
但是看起来您根本没有 XML 列,因为它对 XML 列msg like '<DLR%'无效。
然后,您需要修改您的表,使该列成为 XML,或者您可以在查询中将其转换为 XML。
select cast(msg as xml).value('(/DLR/siteID/text())[1]', 'int') as DOMAIN
from dbo.YourTable
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10915 次 |
| 最近记录: |