Запрос заменить запятую в SQL? - PullRequest
8 голосов
/ 09 января 2009

У меня есть таблица с столбцами сотрудник, адрес, город, штат и почтовый индекс. Я объединил адрес, город, штат, почтовый индекс в один столбец «адрес», разделяя каждое поле запятой.

Моя проблема в том, что если одно из полей имеет значение null, будет вставлена ​​дополнительная запятая. Например, если city равно нулю, результирующее значение будет похоже на address,,state,zipcode. Мне нужно удалить эту лишнюю запятую. Как это сделать? Пожалуйста, помогите.

Ответы [ 4 ]

15 голосов
/ 09 января 2009

Вы можете использовать case when конструкцию

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

Если значения уже есть в базе данных, вы можете заменить их следующим образом:

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

Выполните его N раз, чтобы убедиться, что он покрывает даже случай "все поля пусты".

1 голос
/ 08 июня 2011
select replace(replace(replace(replace('LOKO, , , kkslksl  ',' ',''),',','<>'),'><',''),'<>',',') from dual
1 голос
/ 09 января 2009

или вы можете сделать это вручную в php

<?php

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

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

?>

Полагаю, вы можете сделать это и на своем языке

0 голосов
/ 24 января 2009

Используйте замену, когда вы объединяете свою строку для вставки:

REPLACE('address,,state,zipcode', ',,' , ',' )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...