2016-12-06 119 views
0

在我的數據庫中,我遇到了一個問題,就是如何將單引號轉義出來,導致每次保存記錄時都將其加倍。我已經解決了這個問題,但我需要清理它創建的混亂。SQL Server - 用單個撇號替換多個撇號

所以我想知道什麼是最直接的方式來取代所有比單撇號更多的實例。因此,例如用'

替換''''''表中有許多不同數量的實例。

+0

你能展示一些樣本數據和預期的結果嗎? –

回答

3

嘗試以下

UPDATE yourTable 
SET columnName = REPLACE(REPLACE(REPLACE(columnName,'''','<>'),'><',''),'<>','''') 

這一招這招就派上用場了相應的單實例替換任何字符的多個連續的實例。我在SO上找到了這個替代空間字符的單個空間的多個實例。

+0

非常危險。至少使用控制字符作爲替代。 –

+0

很棒,對我很好,謝謝。 – Brian

1

這涉及到大量的單引號:

update t 
    set col = replace(col, '''''', ''''); 
-----------------------------^^** ^^ 

單引號的第一個字符串有6個單引號,第二個有四個。

^^**顯示代表單引號的雙引號。

+0

謝謝,但這隻適用於特定數目的引號?我想要一個將取代所有實例的解決方案。因此,例如'''和''''''''都將被單引號替換。 – Brian

+0

我認爲這將取代任何有2個singel報價的事件。替換函數找到前2個,用1替換,比找到下2個,依此類推... – GuidoG

+0

@Brian。 。 。我想當我用單引號來解決這個問題的時候,它只是連續兩次。 mhasan的解決方案適用於任何數量。 –