Это дает мне только последний символ (числовой), но мне нужна целая числовая строка
SELECT substring('123 Main Street' FROM '%#"[0-9]#"%' FOR '#')
Это дает мне те же результаты, но мне нужно, чтобы он возвращал пустое значение:
SELECT substring('Main 123 Street' FROM '%#"[0-9]#"%' FOR '#')
ПРИМЕЧАНИЕ: Postgres 7.4
Полезная ссылка: http://www.postgresql.org/docs /7.4/static/functions-matching.html
ОБНОВЛЕНИЕ:
SELECT substring('Main 123 Street' FROM '[0-9]+')
SELECT substring('123 Main Street' FROM '[0-9]+')
ОБНОВЛЕНИЕ 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