xml Datei und Codierung ISO-3166-1

LauraM

Ensign
Registriert
Nov. 2019
Beiträge
133
Guten Morgen,
ich verknüpfe paar Tabellen (MS SQL Server) und mit For XML Path baue ich davon eine XML Datei. Es funktioniert, allerdings ich habe eine Tabelle mit Länder (nummer, land), wo die Länder vor der Abkürzung Buchstaben haben: XA, oder XD, es sieht z.B. so aus: XA-DXDE. IN meine XML Beschreibung steht, dass die Länder nach ISO-3166-1 codiert sind.
Wie kann ich in meine Abfrage einbauen, dass die Länder entsprechend nach ISO gezeigt werden sollen. Ich habe gedacht, dass ich immer die erste 2 Buchstaben löschen kann, aber das ist unregelmäßig.

Bitte sag mir, wie kann ich in eine Abfrage nach Codierung abfragen/vergleichen.
Vielen Dank im Voraus!
 
Eine 2. Tabelle, welche als Key alle ISO3166 Werte enthält und dazu die Werte, welche du willst und dann mit join
 
Hi, danke aber wenn ich eine Tabelle ISO erstelle, über was ich join machen soll? Ich kann nicht über Ländernane, da in tab1 sieht so aus: Xd-de und in isotab ist das "de". Das doofe ist, dass ich Fälle hier habe: XA-DXDE und das ist einfach DE.
 
Zuletzt bearbeitet:
Wenn du deine Daten nicht eindeutig hast, wird es schwierig. Entweder steht überall DXDE und es bedeutet überall DE oder du musst du Daten händisch korrigieren. Natürlich muss es immer auf die identische Art und Weise befüllt sein. Ansonsten ist es kein Datenbankproblem sondern ein Problem bei den Rohdaten bzw. der Datenerhebung, die nicht eindeutig ist.

Alle Engländer müssen müssen den gleichen Ländercode haben, in der gleichen Schreibweise.

Ich habe mir die ISO nie angesehen. Hast du schon Mal rein geschaut?
 
Es scheint als wenn das Design der Datenbank nicht so dolle ist. Sonst hätte man im Datensatz von vornherein nur eine LänderID als Foreign Key eingepflegt und dann in einer separaten Tabelle den Ländercode in verschiedensten Varianten abgelegt, um ihn anschließend mit einem JOIN in der gewünschten Form abzurufen. Evtl. wäre ein Redesign der Tabelle(n) sinnvoll.

Vielleicht reicht es aber auch, wenn du aus der Spalte einfach nur mit

RIGHT ('XA-DXDE', 2)

die beiden letzten Zeichen ausliest.


So oder so muss natürlich sichergestellt sein, dass das bestehende Länderkürzel eindeutig zu identifizieren und zu parsen ist. Wenn beispielsweise auch 'DXDE-XA' vorkommt, fährt RIGHT frontal gegen die Wand.
 
  • Gefällt mir
Reaktionen: scooter010
Hi, danke, alle Länder sind in der Form: "XA-FE", oder "XD-AT".

Wie kann das right join aussehen, also ich kann so sagen, aber nicht aufschreiben:
"vergleiche die letzte 2 Buchstaben, wenn sie gleich der tab 2 sind, verknüpfe".

danke im Voraus!
 
Ohne vollständige Kenntnis der Tabellen inkl. Sample-Daten kann man auch nicht sagen wie ein JOIN aussehen muss.
RIGHT(spalte, 2) kannst du aber auch mitten in die SELECT Anweisung einbauen.

SELECT Id, Name, RIGHT(Land,2) FROM tablexy
 
Hallo, ich habe so gemacht, wie du geschrieben hast: SELECT Id, Name, RIGHT(Land,2) FROM tablexy und es hat funktioniert!

Vielen Dank!
 
  • Gefällt mir
Reaktionen: Raijin
Zurück
Oben