2009-01-09 22 views
8

Tengo una tabla con las columnas empleado, dirección, ciudad, estado y código postal. He combinado dirección, ciudad, estado, código postal en una sola columna 'dirección' que separa cada campo por comas.¿Pregunta para reemplazar una coma en SQL?

Mi problema es que, si uno de los campos es nulo, se insertará una coma adicional. Por ejemplo, si city es nulo, el valor resultante será como address,,state,zipcode. Necesito eliminar esta coma adicional. ¿Como hacer esto? Por favor ayuda.

+0

¿qué idioma usas? – Irmantas

+0

-1: ¿Por qué crearía una sola columna con cuatro valores distintos en ella? –

+0

¿por qué estás tratando de hacer esto? Normalmente, tiene sentido dejar la coma adicional para que quede en blanco (cuando debería estar en blanco) – aronchick

Respuesta

15

Se puede usar un constructo

... = case when city is null then '' else city + ',' end 

case when Si los valores que ya están en la base de datos son podría reemplazar esta manera:

UPDATE tableX SET address= replace(address, ',,', ',') 

ejecutarlo N veces para estar seguro para cubrir incluso el el caso "todos los campos son nulos".

+0

Estoy bastante seguro de que REEMPLAZAR() siempre reemplaza todas las apariciones. Al menos, sí lo hace en tSQL y MySQL, no estoy seguro si es parte del estándar de vanilla SQL. –

+0

Sí, pero seleccione, por ejemplo, seleccionar reemplazar (',,,', ',,', ',') resultados en ,, – splattne

1

o puede hacerlo de forma manual en php

<?php 

$str = 'address,,state,zipcode'; 

$str = preg_replace('/,{2,}/i', ',', $str); 
echo $str; 

?> 

Creo que se puede hacer esto en su lengua también

0

Uso reemplazar cuando ConCat su cadena para insertar:

REPLACE('address,,state,zipcode', ',,' , ',') 
1
select replace(replace(replace(replace('LOKO, , , kkslksl ',' ',''),',','<>'),'><',''),'<>',',') from dual