2012-03-21 9 views
5

Tengo una tabla con una serie de permisos, y necesito cambiar el permiso de cada usuario a Y en una posición dada p en la cadena, ¿hay algún comando SQL que pueda usar o hacer? Tengo que escribir un programa/script para hacerlo?Cambiar una char específica en una cadena MySQL

Respuesta

7

Se puede utilizar una combinación de concat y subcadena en MySQL:

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

Puede reemplazar '12345' con el nombre de la columna.

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

+0

Sugerir para usar la función de inserción(). Guido parece realizar un cambio de un char por otro. Entonces insertar() será correcto. El uso de la subcadena() será correcto si se desea cambiar, por ejemplo, 5 caracteres por 10 caracteres, por lo que cuando fuente-longitud! = Dest-longitud. – Peter

0

sólo tiene que utilizar la función de inserción(). Usted le da la cadena de origen, la cadena que desea insertar y la longitud del carácter. Al igual que:

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

En este caso, buscar un registro de un bombero (Sapador) que pertenecen a una empresa (Unidade) y que como un indicador específico en una cadena (la SUBSTR (tsap_xgen, 52,1) ! = '0' parte de la cláusula WHERE), luego actualizo esta cadena para cambiar el carácter a '0'. Usando insert() puede cambiar más de un carácter, por ejemplo INSERT (field_name, 52, 5, 'Hello')

Observe que el nombre de la función es "extraño" ya que no "inserta" sino que "borra" char en la ubicación para poner los nuevos caracteres.

Cuestiones relacionadas