在你的情况下,功能适用,以获取日期。
模式对你的情况(假设它为您的实际表)
CREATE TABLE #TAB (DATEINXML VARCHAR(MAX))
INSERT INTO #TAB
SELECT '<udf><udf_date_induction>2013-11-19</udf_date_induction>'
UNION ALL
SELECT '<udf><udf_date_induction>2014-12-20</udf_date_induction>'
UNION ALL
SELECT '<udf><udf_date_induction>2015-01-21</udf_date_induction>'
UNION ALL
SELECT '<udf><udf_date_induction>2016-02-22</udf_date_induction>'
所以数据出现在表格中的
+----------------------------------------------------------+
| DATEINXML |
+----------------------------------------------------------+
| <udf><udf_date_induction>2013-11-19</udf_date_induction> |
| <udf><udf_date_induction>2014-12-20</udf_date_induction> |
| <udf><udf_date_induction>2015-01-21</udf_date_induction> |
| <udf><udf_date_induction>2016-02-22</udf_date_induction> |
+----------------------------------------------------------+
现在创建一个用户自定义函数将接受您的专栏,并给予来自xml部分的日期。 (我用递归CTE与所用的东西功能)
CREATE FUNCTION [dbo].[FN_GETDATEFROMXML](@VAR VARCHAR(MAX)) RETURNS VARCHAR(50)
AS
BEGIN
DECLARE @DATA VARCHAR(50)
;WITH CTE AS(
SELECT 1 AS START,CHARINDEX('<',@VAR,1) FIRST_IND,CHARINDEX('>',@VAR,1) SECOND_IND , STUFF(@VAR,CHARINDEX('<',@VAR,1),CHARINDEX('>',@VAR,1),'') AS DATA
UNION ALL
SELECT CAST(SECOND_IND+1 AS INT),CHARINDEX('<',DATA,1) FIRST_IND,CHARINDEX('>',DATA,1) SECOND_IND , STUFF(DATA,CHARINDEX('<',DATA,1),CHARINDEX('>',DATA,1),'') DATA FROM CTE
WHERE CHARINDEX('<',DATA,1) <>0
)
SELECT @DATA= DATA FROM CTE WHERE START= (SELECT MAX(START) FROM CTE)
RETURN @DATA
END
现在调用这个UDF你的表列像下面
SELECT DATEINXML, DBO.[FN_GETDATEFROMXML](DATEINXML) AS DATE_FROM_XML FROM #TAB
结果将是
+----------------------------------------------------------+---------------+
| DATEINXML | DATE_FROM_XML |
+----------------------------------------------------------+---------------+
| <udf><udf_date_induction>2013-11-19</udf_date_induction> | 2013-11-19 |
| <udf><udf_date_induction>2014-12-20</udf_date_induction> | 2014-12-20 |
| <udf><udf_date_induction>2015-01-21</udf_date_induction> | 2015-01-21 |
| <udf><udf_date_induction>2016-02-22</udf_date_induction> | 2016-02-22 |
+----------------------------------------------------------+---------------+
你是什么版本的SQL使用,并且'UDF'列中的每个条目_always_都具有相同的确切XML标签吗? –