左边修剪' abc'并修剪' xyz'

时间:2017-01-18 05:04:11

标签: sql-server-2008

供应商将用户定义的数据作为XML写入单个列,我需要编写一个SQL查询(2008/2012 / 2014),从第3方应用程序的列中提取数据,这里是一个示例专栏

中的内容
<udf><udf_date_ppe>15/12/2019</udf_date_ppe><udf_text_ppn>300965994</udf_text_ppn><udf_date_ved>8/12/2016</udf_date_ved><udf_text_vtno>417 - Working holiday</udf_text_vtno><udf_text_ppi>Taiwan</udf_text_ppi></udf>

问题是我需要获取所有实际数据而不是XML,并且XML没有以相同的顺序存储,这意味着我必须动态地计算出左右修剪的长度。例如,我希望日期仅在此XML

之间
<udf_date_ppe>15/12/2019</udf_date_ppe>

但我不知道它前面有多少个字符。一旦我弄清楚如何做一个我可以复制其他字段,这只是一个用户定义的字段,但至少XML不会改变。我只有查看服务器的权限。

我知道有点痛苦,但感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

如果您只想获取<udf_date_ppe>标记内出现的10个字符,可以使用SQL Server的字符串函数和以下查询:

SELECT SUBSTRING(col, CHARINDEX('<udf_date_ppe>', col) + 14, 10)
FROM yourTable

这假设列中只有一个<udf_date_ppe>标记。

相关问题