供应商将用户定义的数据作为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不会改变。我只有查看服务器的权限。
我知道有点痛苦,但感谢任何帮助。
答案 0 :(得分:1)
如果您只想获取<udf_date_ppe>
标记内出现的10个字符,可以使用SQL Server的字符串函数和以下查询:
SELECT SUBSTRING(col, CHARINDEX('<udf_date_ppe>', col) + 14, 10)
FROM yourTable
这假设列中只有一个<udf_date_ppe>
标记。