gpt4 book ai didi

sql - TSQL 从 xml 值中删除制表符和换行符

转载 作者:行者123 更新时间:2023-12-01 12:48:04 26 4
gpt4 key购买 nike

我正在尝试使用以下查询从 xml 列字段中选择一个值:

SELECT LTRIM(LocalData.value('(/root/questionphrase[@ln="nl"]/xhtml/p)[1]', 'nvarchar(max)'))
FROM Question

我的 xml 的结构:

<root>
<questionphrase ln="nl">
<xhtml>
<p>
Data I want to select</p>
</xhtml>
</questionphrase>
</root>

我得到了预期值,但它们都以 2 个空格开头。经过一些调查后发现在字符串的开头有一个制表符 char(9) 和一个换行符 char(10)。有没有一种通用的方法可以在不手动替换它们的情况下从输出中去除这些字符?我希望 LTRIM 和 RTRIM 能解决问题,但到目前为止运气不好。

注意:我只想替换字符串开头和结尾的字符

最佳答案

您可以创建单独的修剪函数:

修剪函数:

CREATE FUNCTION dbo.LTrimE(@str VARCHAR(MAX)) RETURNS VARCHAR(MAX)
AS
BEGIN
DECLARE @trimchars VARCHAR(10)
SET @trimchars = CHAR(9)+CHAR(10)+CHAR(13)+CHAR(32)
IF @str LIKE '[' + @trimchars + ']%' SET @str = SUBSTRING(@str, PATINDEX('%[^' + @trimchars + ']%', @str), 8000)
RETURN @str
END
GO
CREATE FUNCTION dbo.RTrimE(@str VARCHAR(MAX)) RETURNS VARCHAR(MAX)
AS
BEGIN
DECLARE @trimchars VARCHAR(10)
SET @trimchars = CHAR(9)+CHAR(10)+CHAR(13)+CHAR(32)
IF @str LIKE '%[' + @trimchars + ']'
SET @str = REVERSE(dbo.LTrimX(REVERSE(@str)))
RETURN @str
END
GO
CREATE FUNCTION dbo.TrimE(@str VARCHAR(MAX)) RETURNS VARCHAR(MAX)
AS
BEGIN
RETURN dbo.LTrimE(dbo.RTrimE(@str))
END
GO

你的查询看起来像

SELECT dbo.TRIME(LocalData.value('(/root/questionphrase[@ln="nl"]/xhtml/p)[1]',
'nvarchar(max)'))
FROM Question

Original Source for Trim functions

关于sql - TSQL 从 xml 值中删除制表符和换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14197735/

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