Ich habe über 7 Millionen Zeilen, sonst würde ich Excel verwenden.SQL Trennadresse in mehrere Spalten mit Leerzeichen
Meine Adressspalte hat eine unterschiedliche Anzahl von Wörtern. Einige sind so kurz wie 123 Bay Street, während andere so lang sein können wie 1234 West Spring Hill Drive Apt 123.
Mein Ziel ist es, jedes Wort in eine eigene Spalte zu setzen. Ich war in der Lage, das erste Wort zu bekommen, mit der Abfrage unten. Aber ich kann keine effiziente Abfrage erstellen, um den Rest zu erledigen.
update X
set X.Address_number = Y.[address]
from
(SELECT
unique_id,
CASE
WHEN SUBSTRING(phy_addr1, 1, CHARINDEX(' ', phy_addr1)) = ''
THEN phy_addr1 + ' '
ELSE SUBSTRING(phy_addr1, 1, CHARINDEX(' ', phy_addr1))
END 'address'
FROM
[RD_GeoCode].[dbo].[PA_Stg_excel]) as Y
inner join
[RD_GeoCode].[dbo].[rg_ApplicationData_AllForms_20160401_address] as X on X.unique_id = Y.unique_id
where
X.Address_number is null
Warum möchten Sie * jedes Wort in eine eigene Spalte setzen? Das scheint mir verrückt zu sein. – eggyal
Das klingt nach einer sehr schlechten Idee, aber Sie müssen zuerst Ihre Adresswerte analysieren. Hier sind einige großartige Splitter. http://sqlperformance.com/2012/07/t-sql-queries/split-strings Dann müssen Sie einen dynamischen Drehpunkt machen, um jeden Wert in eine neue Spalte zu setzen. Meine Frage ist jedoch, was ist der Punkt? Was können Sie möglicherweise gewinnen, indem Sie Ihre Daten so trennen? –
Hallo Nick. Was ist das Endziel/Problem, das gelöst werden muss? Vielleicht gibt es einen anderen Ansatz, der mehr Sinn ergibt. – DMason