2012-03-21 45 views
5

我有一個包含一系列權限的表,並且我需要將每個用戶的權限更改爲字符串中給定的位置p中的Y,是否有我可以使用或執行的SQL命令我必須編寫一個程序/腳本來完成它?更改MySQL字符串中的特定字符

回答

7

您可以使用CONCAT和子的組合在MySQL:

mysql> select concat(substring('12345',1,3),'A',substring('12345',5)); 
+---------------------------------------------------------+ 
| concat(substring('12345',1,3),'A',substring('12345',5)) | 
+---------------------------------------------------------+ 
| 123A5             | 
+---------------------------------------------------------+ 

您可以與您的列的名稱取代「12345」。

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html

+0

建議使用insert()函數。 Guido似乎每個人都會改變一個字符。所以insert()將是正確的。使用substring()將是正確的,如果想要改變例如5個char其他10個,所以當source-length!= dest-length時。 – Peter 2016-07-13 13:08:26

0

只需使用插入()函數。你給它的源字符串,你想插入的字符串和字符長度。像:

UPDATE TAB_SAP SET tsap_xgen = INSERT(tsap_xgen, 52, 1, '0') WHERE tsap_unidade = '1392398397' AND SUBSTR(tsap_xgen,52,1) != '0' 

在這種情況下,我搜索了消防員(Sapador),它屬於一個公司(unidade),並且作爲一個字符串(特定標誌SUBSTR(tsap_xg​​en,52.1)的記錄!= WHERE子句的'0'部分),然後我更新這個字符串以將字符更改爲'0'。使用insert()你可以改變多個char,例如INSERT(field_name,52,5,'Hello')

注意函數的名字是「奇怪的」,因爲它不是「插入」而是「擦除」在該位置放置新字符的字符。