2015-11-02 2 views
0

Как я могу преобразовать «Odenwaldstr.» к «Odenwald Strasse».SQL, Transform "... str." to "strasse"

По-немецки это можно написать так или иначе. Для моего проекта мне нужно поставить его в одну сторону. Значение всех имен улиц, заканчивающихся «... str.» должны заканчиваться «... Strasse»

+0

проверки http://www.postgresql.org/docs/8.1/static/functions-string.html – vittore

ответ

0

Пожалуйста, используйте Postgres в встроенный заменить метод, поскольку REGEXP_REPLACE вместо ЗАМЕНЫ метод будет заменить всю часть строки

SELECT REGEXP_REPLACE(column_name,'.(str?)$', 'Strasse'); 

вместо

SELECT REPLACE(column_name , 'str', ' Strasse') 

Узнайте больше о доставке постов postgres здесь http://www.postgresql.org/docs/current/static/functions-string.html

+0

Perfect. Tnx много. –

+1

Это довольно опасно. Неожиданные вещи произойдут, если название улицы содержит «str». –

+0

@GordonLinoff Это правда :-D – Shankar

1

Вы должны быть очень осторожны с этим, чтобы вы не заменили str в других частях слова. Предполагая, что str в конце колонны, я рекомендовал бы более безопасный подход:

select (case when col like '%str.' then substr(col, length(col) - 4) || ' Strasse' 
      when col like '%str' then substr(col, length(col) - 3) || ' Strasse' 
      else col 
     end) as ColWithStrasse 
+0

Спасибо за ваше ценное предложение :-) Я обновил свой ответ с помощью REGEXP_REPLACE, чтобы заменить str на Strasee – Shankar