我在这里有点过头了。
我有一个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已经被空白所取代,理想情况下是孤立的。
我有什么想法,或者有更好的方法吗?我在网上找到了上面的查询,并试图调整它。不习惯使用这些东西。谢谢阅读!
不确定您的数据库设置是否支持正则表达式,但如果是这样,您可以尝试使用它们进行搜索/替换。看看这个链接:
replace a part of a string with REGEXP in sqlite3
获得正则表达式替换功能后,可以将其用作搜索模式:
(?P<mystring>.*\S+)\n$
这将匹配以LF结尾但不在其前面的空格的字符串。然后,您可以使用命名组“mystring”来构造所需的字符串。
你可以在这里测试/修改你的正则表达式:https://regex101.com/