2015-11-16 24 views
1

我有一些字符,我想用其他字符替換它們。如何在REPLACE()函數中使用數組?

  • - =>*
  • / =>.
  • < =>{
  • > =>}

另外這裏是在表中的記錄的一個例子:(數據庫)

+-------------------+ 
| - it <is> a test/ | 
+-------------------+ 

而且我想這個輸出:

+-------------------+ 
| * it {is} a test. | 
+-------------------+ 

嗯,我能做到這一點使用4個分開的更新查詢:(通過其他後執行它們之一)

UPDATE table SET `col` = REPLACE(`col`, '-', '*'); 
UPDATE table SET `col` = REPLACE(`col`, '/', '.'); 
UPDATE table SET `col` = REPLACE(`col`, '<', '{'); 
UPDATE table SET `col` = REPLACE(`col`, '>', '}'); 

現在我想知道,有沒有更短的解決方案? (因爲實際上有12個以上的案件需要更換)。例如,是否可以將所有這些符號寫入數組,然後將該數組放入update查詢中一次?

回答

4
UPDATE table 
SET `col` = REPLACE(REPLACE(REPLACE(REPLACE(`col`, 
                 '>', 
                 '}'), 
               '<', 
               '{'), 
             '/', 
             '.'), 
           '-', 
           '*'); 

在postgresql translate上有一個函數來做到這一點。 http://www.postgresql.org/docs/9.1/static/functions-string.html

這裏我找到了一個複製該函數的存儲過程(註釋用西班牙語)。

http://www.forosdelweb.com/f86/funcion-translate-mysql-704190/

+0

不是說這不是一個很好的解決方案,但應注意的是,你明明犧牲可讀性與去這條路線的效率。 – user2366842

+0

看起來很醜,但很容易以編程方式產生。 – glglgl

相關問題