2012-05-05 159 views
2

考慮我的數據庫以下示例的消息:除去空間

I dont agree with you 
That is something I dont do 
This is another string with dont 
String without d o n t 

每當消息有字符串「不」的話,我想使之成爲後刪除空間一個術語,用以下單詞:

I dontagree with you 
That is something I dontdo 
This is another string with dont 
String without d o n t 

我在我的數據庫中有成千上萬種這類消息。我可以在PHP中查詢數據庫,然後執行一個

$message = str_replace(' dont ', ' dont', $message) 

但是這可能會花費更多的時間,然後在SQL中。是否有可能在SQL中進行相同的操作?

回答

4

使用SQL替換()函數:

update mytable set 
mycol = replace(mycol, ' dont ', ' dont') 

你是對的 - 這將是一個很多快於SQL

+0

只是好奇:爲什麼這是SQL如此之快? – Daan

+0

通常,關係數據庫允許您使用更多內存和處理器來處理操作。這個特定的操作可以在多個處理器上進行。在客戶端,它通常會被序列化。 –

+1

@GordonLinoff這是**完全**不相關。原因在於行集是在內存中處理的,而不是通過線路傳輸並返回。 SQL連接*非常*健談,*這就是爲什麼它更快。你的「多處理器」原因是垃圾:應用程序服務器可以有多個處理器,而數據庫只有一個,但使用SQL的話,它仍然會更快。 – Bohemian