我在这里有点过头了。
我有一个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]&#39; 。可以看出,由于某些原因,我的查询仅替换了零,并且与换行符不匹配。
我需要得到的是:
<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已经被理解了。
任何想法我做错了什么,或者是否有更好的方法?我在网上找到了上面的查询,并试图调整它。不习惯使用这些东西。谢谢你的阅读!
答案 0 :(得分:0)
不确定您的数据库设置是否支持正则表达式,但如果是这样,您可以尝试使用它们进行搜索/替换。看看这个链接:
replace a part of a string with REGEXP in sqlite3
一旦你的regexp替换功能到位,你就可以使用它作为搜索模式:
(?P<mystring>.*\S+)\n$
这将匹配以LF结尾但不在其前面的空格的字符串。然后,您可以使用命名组“mystring”来构造所需的字符串。
您可以在此处测试/修改正则表达式:https://regex101.com/