【问题标题】:Replacing Linefeeds in SQL database替换 SQL 数据库中的换行符
【发布时间】:2017-12-26 00:10:38
【问题描述】:

我有点过头了。

我有一个 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(theColumn, char(13) + char(10), '')吗?还是只是 char(13)?

标签: sql replace match linefeed


【解决方案1】:

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

replace a part of a string with REGEXP in sqlite3

一旦你得到你的正则表达式替换功能,你可以使用它作为你的搜索模式:

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

这将匹配以 LF 结尾但前面没有空格的字符串。然后你可以使用命名组“mystring”来构造你想要的字符串。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    • 2016-05-22
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多