2010-10-19 32 views
7

我有一個巨大的mysql表(稱爲tcountriesnew)和一列(稱爲slogen, blob type)。 在每個slogen blob中,我想替換一個單詞,例如:bananaapple用MySQL替換BLOB文本中的單詞

不幸的是,我試圖用word香蕉打印所有的行,並沒有奏效。

select * from tcountriesnew where slogen like '%banana%';

請幫幫我。

  • 我錯過了什麼,我的查詢有什麼問題?
  • 如何替換blob中的文本?

回答

7

取決於你所說的 「替換」 節目中選擇的意思:

select replace(slogen, 'bananas', 'apples') from tcountriesnew where slogen like '%bananas%'; 

或更新數據表中的:

update tcountriesnew set slogen=replace(slogen, 'bananas', 'apples') where slogen like '%bananas%'; 

BTW。爲什麼你使用blob作爲文本?您應該使用text類型的文本數據和blob二進制數據。

+1

在某些情況下,它是需要保存的文本BLOB。就我而言,無論出於何種原因,Drupal 7開發人員都選擇將blob用於所有TEXT列 - 通常這是開發人員無法控制的。 – Druvision 2013-05-26 14:20:43

+0

如果你想支持任何所有的語言,那麼可能需要'BLOB'。也許。對於大多數語言來說'TEXT'很好。當使用'BLOB'時,你會放鬆很多功能,因爲文本本質上不被視爲文本服務器端。這就是爲什麼我會推薦使用'TEXT'。如果某些語言仍然存在一些問題,那麼無論如何他們可能會在MySQL服務器中修復。 – Nux 2013-05-26 14:52:56

+0

@Nux:如果只有一次香蕉需要更換,而不是所有人都說它位於2380位。如何做到這一點 – Learner 2014-08-05 07:14:00

0

您使用的是哪個版本?也許這是這個bug:。 否則請嘗試cast blob列。

1

在某些情況下,需要保存文本BLOB。就我而言,無論出於何種原因,Drupal 7開發人員都選擇將blob用於所有TEXT列 - 這不受開發人員的控制。

要將blob轉換爲文本,請使用MySql轉換函數。然後,您必須將其保存到數據庫中並將其再次轉換爲blob - 但這是由MySQL自動處理的。所以下面的查詢可以做到這一點:

UPDATE tcountriesnew 
SET slogen = replace(CONVERT(slogen USING utf8), 'bananas', 'apples') 
WHERE slogen LIKE '%bananas%'; 

在MySQL 5.5上,這完全解決了我的問題。

此外,configure your PhpMyAdmin to show Blob data