gpt4 book ai didi

html - 消除或翻译从 XML 文件导入的 SQL 中的 HTML 字符

转载 作者:数据小太阳 更新时间:2023-10-29 02:44:24 25 4
gpt4 key购买 nike

我在运行分解 XML 文件并将数据导入 SQL Server 的过程时遇到了一个问题。

已经成功运行几个月了,今天却报错:

Conversion failed when converting date and/or time from character string.

这是失败的地方

SELECT 
ltrim(rtrim(T.X.value('Cell[4]/Data[1]','varchar(max)'))) AS StartDate
,ltrim(rtrim(T.X.value('Cell[5]/Data[1]','varchar(max)'))) AS EndDate
FROM @xml.nodes('/Workbook[1]/Worksheet1]/Table[1]/Row') as T(X)

当我查看 XML 文件时,我注意到一些日期是这样写的:

01/12/2016&#160

这个字符   是一个 Non-breaking space .

我想知道 SQL Server 中是否有任何方法可以解决这些类型的问题?对于这个特定问题,我可以使用 REPLACE:

SELECT 
REPLACE(ltrim(rtrim(T.X.value('Cell[4]/Data[1]','varchar(max)'))),'&#160','') AS StartDate
,ltrim(rtrim(T.X.value('Cell[5]/Data[1]','varchar(max)'))) AS EndDate
FROM @xml.nodes('/Workbook[1]/Worksheet1]/Table[1]/Row') as T(X)

但是如果出现其他 XML/HTML 字符,是否有一种方法可以普遍检查/处理它们?

最佳答案

我想您可以创建一个您希望替换/删除的字符串辅助表并将其加入您的查询。这比对每个字符进行硬编码更可取,并且可以让您轻松扩展功能。需要注意的是,我希望它会根据您需要替换/删除的字符数来减慢您的查询速度。

SELECT 
REPLACE(ltrim(rtrim(T.X.value('Cell[4]/Data[1]','varchar(max)'))),
StringsToRemove.string,'') AS StartDate,
REPLACE(ltrim(rtrim(T.X.value('Cell[5]/Data[1]','varchar(max)'))),
StringsToRemove.string, '') AS EndDate
FROM
@xml.nodes('/Workbook[1]/Worksheet1]/Table[1]/Row') as T(X),
StringsToRemove

关于html - 消除或翻译从 XML 文件导入的 SQL 中的 HTML 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34752651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com