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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß nicht, postgresql regex-syntax, aber in den meisten regex schreiben Sie
[0-9]+
. Ohne die Quantifizierer,[0-9]
entspricht einem einzelnen Zeichen.Habe ich nicht eine Postgres-Installation zu testen, aber so etwas wie dies funktionieren könnte:
SELECT substring('123 Main Street' FROM '^[0-9]+')
Dass gibt nichts zurück, wenn es nicht mit einer Zahl beginnen. Wenn Sie wollen, um wieder den vollen string statt, sollte dies funktionieren:
SELECT substring('123 Main Street' FROM '^[0-9]+|.*')
Vielleicht ist es noch nicht zu spät, sich zu verbessern rmmh Antwort.
Diese funktioniert bei mir:
In postgresql, entfernen Sie einfach das caret-Zeichen für die zahlen zu zeigen.
wenn
column_name = 'XXXX-0001'
das Ergebnis wird sein: