Значение SQL REPLACE, основанное на позиции в строке - PullRequest
0 голосов
/ 08 июля 2019

У меня есть столбец, в котором все значения находятся в этом формате '### - ## - # - ## - ## - ### - ## - #' Мне нужно отформатировать все значения, чтобы где от второго до последнего дефиса заменяется точкой '### - ## - # - ## - ## - ###. ## - #'

Могу ли я использовать REPLACE на основе позиции в строке?

Примером будет изменение "068-27-0-40-12-012-00-0" на "068-27-0-40-12-012.00-0"

Ответы [ 3 ]

1 голос
/ 08 июля 2019

Предполагая, что вы находитесь на сервере SQL, используйте метод STUFF, чтобы выполнить свою работу.

SELECT STUFF ('### - ## - # - ## - ## - ### - ## - #', 19, 1, '.');

Первый параметр - символьное выражение Второй параметр - начиная с n-й позиции Третий параметр - нет позиций, подлежащих замене Четвертый параметр - строка, подлежащая замене

0 голосов
/ 08 июля 2019
select left([ColumnName], 19) + '.' + right([ColumnName], 4);
0 голосов
/ 08 июля 2019

Большинство баз данных поддерживают left() и right() (а в тех, которые не могут, вы можете использовать substr() / substring() для того же эффекта). Итак:

select left(col, 19) || '.' || right(col, 4)

Ваша база данных может предпочесть другой оператор / функцию конкатенации.

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