SQL-скрипт для обновления всех значений столбцов, начиная с числа и — с пустого в Postgresql

#sql #regex #postgresql #sql-update

Вопрос:

Мне нужно обновить значения столбца varchar, значения начинаются с числа, за которым следует — и затем несколько букв

Для Бывших: 27-Check This

Мне нужно обновить это значение, т. Е. Мне нужно удалить начальное число и -

Пример ожидаемого результата: Check This

ПРИМЕЧАНИЕ: только начальное число и - должно быть удалено, все значения после первого алфавита не должны изменяться. Т. е., если какое-то число или - присутствует после первого алфавита, то его не следует удалять.

Для бывших: 27-Check 23-C This

Ожидаемый результат: Check 23-C This

NB: Я новичок в sql, поэтому, пожалуйста, помогите, даже если вам это кажется простым

Комментарии:

1. regexp_replace .

2. @LaurenzAlbe не могли бы вы, пожалуйста, помочь мне с регулярным выражением, которое будет использоваться здесь ?

Ответ №1:

вы можете использовать regexp_replace для удаления начальных цифр:

 update the_table
   set the_column = regexp_replace(the_column, '^[0-9]{1,}s*-s*', '')
where the_column ~ '^[0-9]{1,}'
 

^[0-9]{1,}- в деталях:

  • ^ совпадение в начале строки
  • [0-9]{1,} по крайней мере, одно число
  • s* за ним следует ноль или более (белых) пробелов
  • - затем последовал рывок
  • s* за ним следует ноль или более (белых) пробелов

where Предложение гарантирует, что будут изменены только те столбцы, которые необходимо изменить (например, значения, не начинающиеся с числа, вообще не будут затронуты).

Комментарии:

1. Спасибо, что есть пробел после числа Например : 27 — проверьте . Как обновить такого рода значения ?

2. Спасибо a_hourse_with_no_name

Ответ №2:

Если вам просто нужно все после первого дефиса, когда шаблон начинается с числа, вы можете использовать:

 update t
    set col = substring(col from '-(.*)')
    where col ~ '^[0-9] -';
 

substring() с шаблоном-это хорошая реализация того, что можно было бы назвать regexp_substr() в других базах данных. Он просто возвращает первый раз, когда шаблон находится в строке. Полный шаблон соответствует, но если есть круглые скобки, то возвращается только эта часть.