gpt4 book ai didi

tsql - TSQL 中的左修剪换行符

转载 作者:行者123 更新时间:2023-12-01 08:10:37 30 4
gpt4 key购买 nike

我尝试在 tsql 中左修剪换行符。所以我想删除领先的
字符(13) + 字符(10)
我在一个字段中的数据。并确保不会删除其他换行符。

我的意思是:

'
Kanne Oliver
Rosa-Luxemburg-Str. 3
07817 Alton ( Elster)'

应该是这样的:
'Kanne Oliver
Rosa-Luxemburg-Str. 3
07817 Alton ( Elster)'

提前致谢

最佳答案

如果数据的每一行在开头都有 CR LF,只需将它们从行中剥离

SELECT SUBSTRING(3, LEN(field)) field
FROM Table

否则,如果不是所有行都以 CR LF 开头,则需要从中检查
SELECT CASE WHEN CHAR(13) + CHAR(10) = LEFT(field, 2)
THEN SUBSTRING(field, 3, LEN(field))
ELSE field
END
FROM Table

在此之前的查询只会删除第一个 CR LF,要删除任意数量的查询,可以使用递归 CTE
WITH S AS (
SELECT sentence
= CASE WHEN char(13) + char(10) = LEFT(sentence, 2)
THEN SUBSTRING(sentence, 3, LEN(sentence))
ELSE sentence
END
FROM Test
UNION ALL
SELECT sentence = SUBSTRING(sentence, 3, LEN(sentence))
FROM S
WHERE char(13) + char(10) = LEFT(sentence, 2)
)
select Sentence
FROM S
WHERE char(13) + char(10) <> LEFT(sentence, 2)

或者,正如 Filip De Vos 在评论中指出的那样,搜索不是 CR LF 的第一个字符
SELECT SUBSTRING(sentence
, PATINDEX('%[^' + char(13) + char(10) + ']%', sentence)
, LEN(sentence))
FROM test

SQLFiddle demo有两个查询

关于tsql - TSQL 中的左修剪换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24184512/

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