2016-03-15 74 views
3

我正在嘗試使用MSSQL做一個簡單的查找和替換查詢,但是查詢運行時不刪除字符。在我的保存中我想要一個查詢而不必在每個列表中列出唯一數據行。使用SQL替換表格中的引號標記字符

當前行

Number 
    ''12454545'' 
    ''12454'' 
    ''1895622'' 
    ''9846252'' 

報應輸出

Number 
    12454545 
    12454 
    1895622 
    9846252 

因此我只需要到( '')從每行中的值除去。 Excel中的查找和替換功能正是這裏所要求的原則。

以下是我試過的兩個查詢成功運行的問題,但它並未刪除('')。

UPDATE [Table] 
SET [Number] = REPLACE([Number], '''', '') 

SELECT REPLACE([Number], '''', '') FROM [Table] 

有什麼建議嗎?

+0

如果您的查詢'SELECT REPLACE([編號], '' '', '')FROM [表]'出欄值如預期那麼您的更新查詢必須工作 –

+0

Def給我一個列值,但不能通過刪除它來替換引號。 –

+0

你確定這是一個簡單的單引號? SELECT ASCII([Number])FROM [Table]'的結果是什麼?這真的是字符39嗎? –

回答

1

試試這個:

UPDATE [Table] 
SET [Number] = REPLACE([Number], '"', '') 

這基本上具有如更換兩個「同樣的影響」,因爲每個人的將被替換。

我不確定它爲什麼不能正常工作,但我可以猜測它是因爲SQL-SERVER如何處理字符串中的引號和''''與''相同,因此當您將單個引號它會被認可。

+0

嗨。試過了,但我相信由於''現在是一個不規則的數字,它認爲它仍然是一個開放的命令,需要另一個(')來關閉查詢。這是否有意義呢? –

+0

我不明白,當您運行我的查詢時會發生什麼? @ChantelleBrink – sagi

+0

字符串''之後未使用引號') –

0

嘗試

UPDATE [Table] 
SET [Number] = REPLACE(REPLACE([Number],'''',''),'"','') 
+0

Ajmot嗨 - ?也不沃金收到以下錯誤在指定的上下文非布爾類型的表達式。其中一個條件的預期,近「」。 –

2

好吧,我想你可以查詢這樣的事情之前使用SET QUOTED_IDENTIFIER OFF -

SET QUOTED_IDENTIFIER OFF; 

UPDATE [Table] 
SET [Number] = REPLACE([Number], "'", "") 

SET QUOTED_IDENTIFIER ON; 
+0

防守看到你這個打算,也不過成功運行,但仍不能消除的報價。不知道我在做什麼錯在這裏或丟失。 –

2

您對我的評論的回覆表明,你正在處理的ASCII字符34,這是一個普通的雙引號(「),而不是您要用當前代碼替換的單引號('字符39)。

而是嘗試:

UPDATE [Table] SET [Number] = REPLACE([Number], '"', '') 

或者,使它更加明顯:

UPDATE [Table] SET [Number] = REPLACE([Number], CHAR(34), '') 
+0

太好了,謝謝你。對不起對於這裏關於單和雙等的困惑 –