2016-08-05 11 views
0

Ich habe ein Feld namens Address1 in meiner Tabelle Table1. HierSplit eine Adresse - TSQL

ist ein Beispiel für Daten, die in diesem Bereich -

8 Brick Lane und 11 Balkerne Antrieb

ich in einer Abfrage will die Straße und die Nummer zu spucken, aber ich kämpfe mit, wie dies zu erreichen.

Jede Hilfe wäre dankbar.

Dank

+0

Könnten Sie das erwartete Ergebnis zeigen verwenden? –

+0

Hier ist ein Beispiel für Daten in diesem Feld - 8 Brick Lane und 11 Balkerne Drive oder es könnte 1c sein Safe Street Ich schreibe eine Abfrage zu versuchen und erreichen Sie die folgenden aus dem Address1 Feld. In den obigen Beispielen würden sich 8 und 11 als "HouseNumber" zurückziehen. In den obigen Beispielen würde 1c als "HouseName" zurückziehen In den obigen Beispielen würden Safe Street, Brick Lane und Balkerne Drive in "Street" erscheinen – ikilledbill

Antwort

1
SELECT 
LEFT(Address1, PATINDEX('%[a-z]%', Address1)- 1) as HouseNumber, 
SUBSTRING(Address1, PATINDEX('%[a-z]%', Address1), LEN(Address1)) as Street 
FROM Table1 

PATINDEX Verwendung zu finden, wenn HouseName beginnen, auf diese Weise Sie Adresse trennen kann.
Dies ist das erwartete Ergebnis:

HouseNumber Street 
8   Brick Lane 
11   Balkerne Drive 

ich diese Hilfe hoffen.

1

Ich asssuming Sie die Nummer aus dem Text teilen möchten, können Sie

SELECT Left(Address1,CHARINDEX(' ',Address1,0)-1) as houseNumber, 
    Right(Address1,Len(Address1)-CHARINDEX(' ',Address1,0)) as houseStreet 
From Table1 
+0

Beendet mit einer Kombination - \t \t FALL WENN PATINDEX ('% [^ 0 -9]% ', links (Adresse1, CHARINDEX (' ', Adresse1,0) -1)) = 0 \t \t DANN links (Adresse1, CHARINDEX (' ', Adresse1,0) -1) ELSE NULL END AS BuildingNumber , \t \t CASE WHEN PATINDEX ('% [^ 0-9]%', links (Address1, CHARINDEX (' ' Address1,0) -1))> 0 \t \t dann nach links (Address1, CHARINDEX ('' , Adresse1,0) -1) ELSE NULL END AS GebäudeName, \t Rechts (Adresse1, Len (Adresse1) -CHAR) INDEX ('', Adresse1,0)) AS Straße, – ikilledbill