Wählen Sie " nur numerische Teil der Zeichenfolge nur, wenn er beginnt mit einem numerischen Wert

Dies ist nur, dass Sie mir das Letzte Zeichen (numerisch), aber ich brauche die ganze numerische Zeichenfolge

SELECT substring('123 Main Street' FROM '%#"[0-9]#"%' FOR '#')
  • Ergebnisse: 3
  • Erwartet: 123

Dies gibt mir die gleichen Ergebnisse, aber ich brauche Sie, um zurückzukehren, ein leerer Wert:

SELECT substring('Main 123 Street' FROM '%#"[0-9]#"%' FOR '#')
  • Ergebnisse: 3
  • Erwartet:

HINWEIS: Postgres 7.4

Nützlicher Link: 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]+')
  • Die beiden nun zurück: 123
  • Immer noch müssen, zu überspringen oder zurück vollständige Zeichenfolge: Main 123 Street'

UPDATE 2:

Fast haben es:

Das gibt mir die Ergebnisse, die ich will, wenn es beginnt nicht mit einem numerischen Wert:

SELECT 
    COALESCE(substring('Main 123 Street' FROM '[0-9]*') || 'Main 123 Street', ''),
    substring('Main 123 Street' FROM '[0-9]*')

Aber das gibt mir beides und ich möchte nur die zweite Bedingung:

SELECT 
    COALESCE(substring('123 Main Street' FROM '[0-9]*') || '123 Main Street', ''),
    substring('123 Main Street' FROM '[0-9]*')

HABE ICH ES GESCHAFFT!!! Danke für alle die gepostet:

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
  • Ist dieser für die Sortierung von alphanumerischen Werten, die beginnen mit zahlen?
  • Nein, ich will zurückkehren, eine partielle Adresse, wenn es beginnt mit einem numerischen Wert sonst noch eine vollständige Adresse
Schreibe einen Kommentar