我運行Ghost博客,我想查找並將所有單引號和雙引號替換爲「引號」(請參見here),但我並不熟悉SQLite。到目前爲止,我想出了這一點:SQLite用曲線引號替換直引號
update posts set markdown = replace(markdown, '""', '「');
上面的命令代替我所有的雙引號來打開彎引號(ALT + 0147)。然後我試圖運行相同的命令,但用收盤報價(ALT + 0148),像這樣:
update posts set markdown = replace(markdown, '「', '」');
這基本上替換所有與收盤報價在打開彎引號。這就是我被卡住的地方。我不知道如何在sqlite中創建一個異常,以便它只替換後面帶有文本的引號。此外,我還沒有考慮過這種情況,我希望我的直引號保持不變,比如在HTML鏈接中,正如評論中指出的那樣。
更新:它工作
多虧了一個答案,我已經找到了解決方案,它在我的情況得很完美!需注意,我用的是DB瀏覽器的SQLite進行修改,我的數據庫 -
update posts set markdown = replace(markdown, ' "', ' 「');
update posts set markdown = replace(markdown, '." ', '.」 ');
update posts set markdown = replace(markdown, '" ', '」 ');
以上兩個命令已經取代所有打開雙引號彎引號,和同爲收盤報價。現在剩下要做的就是,正如下面的答案所述,涵蓋了可能出現這種引用的所有可能性。這同樣適用於單引號,像這樣:
update posts set markdown = replace(markdown, ' ''', ' ‘');
update posts set markdown = replace(markdown, '.'' ', '.’ ');
update posts set markdown = replace(markdown, ''' ', '’ ');
而對於所有的插圖中的撇號:
update posts set markdown = replace(markdown, '''', '’');
請提供一個[mcve],即一個合適的玩具數據庫的'.dump'。 – Yunnosch
確保您具有涵蓋您想要處理的所有案例的樣本輸入。例如。字符串以引號開頭和結尾,字符串在中間包含引號。字符串以引用詞開頭,然後繼續。開始不加引號,然後以引用結束。以上兩個引用部分的組合。引用的部分包含空格.... – Yunnosch
嗨@Yunnosch我已經導出並從博客上傳一篇文章作爲.SQL到https://pastebin.com/E1f9waZh 順便說一下,我使用「DB Browser for SQLite 「程序來改變我的數據庫。我從那裏輸出它。 – Nick