2012-09-03 65 views
3

我得到这个表:MYSQL更改多列

APPLICATION  TEST DESCRIPTION  FICHIERCONF  FICHIERXML FICHIERPROXY PORTAIL  PERIODEMAINTENANCE NOMDNS TPSWARN  TPSCRIT  TYPEMAJ  TYPERAPPORT  CONTREMESURE TPSCONTREMESURE  AUTH_URL APP_URL_ENC 
cerbere  Application-Ping test cete-config-cerbere  cerbere.xml  config-no-proxy.xml  0  cerbere.application.i2 0 0 1 Nagios 1 30 NULL NULL 
cerbere  Application-Ping2 test cete-config-cerbere  cerbere.xml  config-no-proxy.xml  0  cerbere.application.i2 0 0 1 Nagios 1 30 NULL NULL 

对于1个单列我想改变“塞尔贝尔”每次我看到了另一个文本,在所有列。

例如,我说:在'lidia'的第一行更改'cerbere'。我希望我的应用程序字段由'lidia'更改,fichierconf字段由'cete-config-lidia'更改,fichierxml由lidia.xml更改,nomdns由'lidia.application.i2'更改。

有没有办法做到这一点?

回答

5

您需要使用更新表语法。

update 
TABLE_NAME 
set 
FIELD_NAME = replace(FIELD_NAME, 'find this string', 'replace found string with this string') 
, ANOTHER_FIELD_NAME = REPLACE(ANOTHER_FIELD_NAME, 'foo', 'bar') 
, AND_ANOTHER_ANOTHER_FIELD_NAME = REPLACE(...) 
... /*as much columns as you like*/ 
; 

你可以为每列做到这一点,虽然有可能是仍然较好地解决这个快速和肮脏的黑客应该让你开始。

+0

Thx为REPLACE的事情,但我怎么能不知道FiledName但所有领域? – timmalos

+0

我不明白。所以你希望能够选择一个任意的表格,然后检查所有的列并检查一些字符串的出现?我理解正确吗? – KennyBartMan

+0

随着你的语法,我需要为每个列做10次这个查询。因为我想为我的表的所有列执行此操作,是否有办法在一个请求中执行所有这些操作? – timmalos