SQL удаляет первые дефисы (-) из БД и удаляет последовательные пробелы - PullRequest
1 голос
/ 26 февраля 2012

В одном из моих полей у меня есть данные, которые выглядят как

-  Data with spaces, some other data,   .

Я положил.в конце, чтобы вы могли видеть, что у него есть двойной пробел

Я хочу удалить - и удалить все и все двойные (или более пробелов).Оставив результат с одним пробелом.

Не все данные в столбце имеют дефис (-). Некоторые из них

Data with spaces, some other data
Data  with  double  spaces,  some other data  . (double space at end)
  Data with leading double space, some other data
- Some data with hyphen,  and double space
  - double space leading hyphen, some other data

Это несколько вариантов в БД.Я пытался исправить каждое из них вручную, но исправление записи заняло так много времени.

Ответы [ 4 ]

1 голос
/ 26 февраля 2012

попробуйте это:

rtrim(ltrim(REPLACE (COLUMN_NAME, '-', ' ')))

Я не понял, нужен ли вам в конце дополнительный пробел, но если вы просто добавите + ''

1 голос
/ 26 февраля 2012

Вы можете попробовать объединить некоторые из основных функций , чтобы получить желаемый результат.

Например, запрос

select trim(substr('-  Data with spaces, some other data,   ', 2))

выходы Data with spaces, some other data,

Сначала я удалил -, вернув подстроку, а затем обрезал пробелы.

Редактировать: проверка на ведущий - символ

select trim(
   case
      when (substr(FIELD, 1, 1) in ('-'))
         then substr(FIELD, 2)
      else
         FIELD
   end)

in ('-') предназначен для случая, когда вы хотите исключить больше символов, напр. in ('-', '+', ',')

0 голосов
/ 07 сентября 2018

мы можем использовать запрос на обновление с функцией замены

update info_table
set address = replace(address, ' ', '-')

out-put enter image description here

я взял эту информацию на neerajcodesolutions.com

0 голосов
/ 26 февраля 2012

Нечто подобное будет работать. Хотя это немного грязно, поэтому я не уверен, хотите ли вы этого или нет. Вы можете хотеть рекурсивную функцию как cte, чтобы удалить больше чем 2 пробела все же. Но это решает проблему в представленном виде.

select 
case SUBSTRING('-  Data with spaces, some other data,   .', 1,1)
    when '-' then REPLACE(
        SUBSTRING('-  Data with spaces, some other data,   .',2,
            LEN('-  Data with spaces, some other data,   .')-1)
        ,'  ',' ')
    else REPLACE('-  Data with spaces, some other data,   .','  ',' ')
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...