在SQL数据库中替换换行符

问题描述 投票:0回答:1

我在这里有点过头了。

我有一个SQL数据库,我正在尝试用空格+换行替换所有不在空白之前的换行符(LF)。我正在使用SQLiteStudio。我现在拥有以下内容:

UPDATE table 
SET column = replace( column, '%' + char(10) + '%', ' ' )

当我运行上面的查询时,以下数据:

<br><strong><font color="2018283286c3">
Lorem ipsum dolor sit amet, consectetur adipiscing[LF]
elit, sed do eiusmod tempor incididunt ut labore et[LF]
<hr size="1px" noshade style="clear:both;margin-top:10px;height:1px;">

......成为:

<br><strong><font color="2% %18283286c3">
Lorem ipsum dolor sit amet, consectetur adipiscing[LF]
elit, sed do eiusmod tempor incididunt ut labore et[LF]
<hr size="1px" noshade style="clear:both;margin-top:1% %px;height:1px;">

为了清楚起见,我在上面添加了[LF]。可以看出,由于某种原因,我的查询仅替换了零,并且与换行符不匹配。

我需要最终得到的是:

<br><strong><font color="2018283286c3">
Lorem ipsum dolor sit amet, consectetur adipiscing[WHITESPACE][LF]
elit, sed do eiusmod tempor incididunt ut labore et[WHITESPACE][LF]
<hr size="1px" noshade style="clear:both;margin-top:1% %px;height:1px;">

...所以只有未被空格预先填充的LF匹配并用空格+ LF替换。 LF已经被空白所取代,理想情况下是孤立的。

我有什么想法,或者有更好的方法吗?我在网上找到了上面的查询,并试图调整它。不习惯使用这些东西。谢谢阅读!

sql replace match linefeed
1个回答
0
投票

不确定您的数据库设置是否支持正则表达式,但如果是这样,您可以尝试使用它们进行搜索/替换。看看这个链接:

replace a part of a string with REGEXP in sqlite3

获得正则表达式替换功能后,可以将其用作搜索模式:

(?P<mystring>.*\S+)\n$

这将匹配以LF结尾但不在其前面的空格的字符串。然后,您可以使用命名组“mystring”来构造所需的字符串。

你可以在这里测试/修改你的正则表达式:https://regex101.com/

© www.soinside.com 2019 - 2024. All rights reserved.