2012-03-22 88 views
2

我有大約一千條條目在整個條目中都包含反斜槓。有沒有簡單的方法,或者是一個可以從每個條目中刪除特定字符的腳本?刪除/隱藏MySQL數據中添加的反斜槓

+0

這是服務器端語言的PHP? – 2012-03-22 01:48:20

+0

是啊,它使用php – Chris 2012-03-22 01:48:54

+0

嘗試strips stripsheshes($ yourvalue)你從哪裏顯示數據庫的價值? – 2012-03-22 01:49:43

回答

6

替換應該做你的工作。

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_replace

UPDATE table_name SET col=REPLACE(col, '\\', '') 

這應該工作。它將用空字符串更新替換\的列。我只是不記得你是否必須跳過\,使用\\或只是\。在運行查詢之前檢查它,使用SELECT col, REPLACE(col,'\\','') FROM table_name並查看結果是否符合您的期望。

2

由於magic_quotes的原因,可能會在數據庫中添加反斜槓以避開引號。你不應該從那裏刪除它們。

您應該使用stripslashes($ yourvalue)PHP函數您可以在哪裏顯示頁面上數據庫的值。

0

在您的控制器您可以添加:

public function init() 
{  
     $this->view->setEscape('stripslashes'); 
} 

這將逸出,同時顯示斜線。

如果你想刪除斜線同時插入到DB你可以使用:

stripslashes($your_value) 

如果你只是想刪除從當前數據斜線遊馬辦:

UPDATE table_name SET col=REPLACE(col, '\\', '') 
1

我不沒有足夠的信譽來評論@ Enrico的解決方案(是的,我知道這是一個兩年前的問題,但Google的搜索結果很高),但我可以證實他的查詢是有效的。另外,您可以使用where子句將實際包含反斜槓的結果限制爲僅用於執行前檢查的結果。

檢查:

SELECT col, REPLACE(col,'\\','') FROM table_name WHERE col LIKE '%\%' ESCAPE '|' 

執行:

UPDATE table_name SET col=REPLACE(col,'\\','') WHERE col LIKE '%\%' ESCAPE '|'; 

escape子句用於設置在like條款(但不是REPLACE()功能)的轉義字符。由於我們正在使用反斜槓,因此我們更改了轉義字符以確保獲得我們想要的內容。

還請注意,您可能需要首先set SQL_SAFE_UPDATES=0,這取決於您的環境。