Это только последний символ (числовой), но мне нужна вся числовая строка
SELECT substring('123 Main Street' FROM '%#"[0-9]#"%' FOR '#')
- Результаты: 3
- Ожидается: 123
Это дает мне те же результаты, но мне нужно вернуть пустое значение:
SELECT substring('Main 123 Street' FROM '%#"[0-9]#"%' FOR '#')
ПРИМЕЧАНИЕ: Postgres 7,4
Полезная ссылка: http://www.postgresql.org/docs/7.4/static/functions-matching.html
UPDATE:
SELECT substring('Main 123 Street' FROM '[0-9]+')
SELECT substring('123 Main Street' FROM '[0-9]+')
- Теперь оба возвращают: 123
- Еще нужно пропустить или вернуть полную строку: 'Main 123 Street'
ОБНОВЛЕНИЕ 2:
Почти есть:
Это дает мне желаемый результат, если он не начинается с числового значения:
SELECT
COALESCE(substring('Main 123 Street' FROM '[0-9]*') || 'Main 123 Street', ''),
substring('Main 123 Street' FROM '[0-9]*')
Но это дает мне и то и другое, и я хочу только второе условие:
SELECT
COALESCE(substring('123 Main Street' FROM '[0-9]*') || '123 Main Street', ''),
substring('123 Main Street' FROM '[0-9]*')
Я ПОЛУЧИЛ ЭТО !!! Спасибо всем, кто написал:
SELECT CASE
WHEN COALESCE(substring(db_column FROM '[0-9]*'), db_column) != '' THEN COALESCE(substring(db_column FROM '[0-9]*'), db_column)
ELSE db_column
END AS addsress_string
FROM db_table