2015-11-16 23 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

相关问题