2011-06-23 14 views
6

deseo cambiar el primer carácter de una 'U' a una 'S' en un campo en mi mesa (MySQL), hasta ahora tengo el siguiente:cambiar el primer carácter en un campo

UPDATE customers_basket 
SET products_id = REPLACE(
        LEFT(products_id,1), 'U', 'S') +  
        SUBSTRING(products_id, 2, CHAR_LENGTH(products_id) 
); 

pero esto no me da el efecto deseado, ¿alguien puede ayudarme?

gracias!

+0

¿Qué sucede en su lugar? –

+0

cada campo simplemente se reemplaza con un cero, eso es ... – seb

Respuesta

11
UPDATE customers_basket 
SET products_id = CONCAT(
        REPLACE(
         LEFT(products_id,1), 'U', 'S'),  
         SUBSTRING(products_id, 2, CHAR_LENGTH(products_id) 
)); 

Usted está intentando agregar personajes juntos, por ejemplo,

select 'c' + 'a'; 
+-----------+ 
| 'c' + 'a' | 
+-----------+ 
|   0 | 
+-----------+ 
+0

gracias por explicar por qué tengo ceros todo el tiempo – seb

4
update customers_basket 
set products_id = 'S' + SUBSTRING(products_id,2,CHAR_LENGTH(products_id)) 
where LEFT(products_id,1) = 'U' 
0
update customers_basket 
set products_id = CONCAT('S', RIGHT(products_id,CHAR_LENGTH(products_id)-1)) 
WHERE LEFT(products_id,1) = 'U' 
1

Simplemente podría utilizar:

UPDATE customers_basket SET products_id=CONCAT('S', SUBSTRING(products_id FROM 2)); 

es decir: En lugar de reemplazar la inicial "U" con una "S", sólo tiene que comenzar con una "S" y copiar los caracteres restantes .

Esto por supuesto supone que todos de las entradas de products_id comienzan con una "U". Si no lo hacen, sólo tiene que añadir una condición WHERE tales como:

UPDATE customers_basket SET products_id=CONCAT('S', SUBSTRING(products_id FROM 2)) 
WHERE LEFT(products_id, 1) = 'U'; 
0

SUBSTRING(products_id, 2) le dará el segundo personaje en adelante. Así que usted puede hacer algo como:

update customers_basket set products_id = concat('S', substring(products_id, 2)); 

Si sólo desea cambiar aquellos cuyo primer carácter es una 'U' sólo tiene que añadir una cláusula WHERE apropiada, por ejemplo,

update customers_basket set products_id = concat('S', substring(products_id, 2)) where left(products_id,1)='U'; 
Cuestiones relacionadas