Ich habe eine Tabelle, die Definitionen mit einem Leerzeichen und Komma Trennzeichen enthält. Die Definitionen sehen so aus: "Katze, Hund, Pferd, Haus, Stadt". Es gibt Leerzeichen, die vor oder nach dem Komma erscheinen können.Wie kann ich eine Tabelle normalisieren, indem Sie kommagetrennten Text aus einer Spalte in eine untergeordnete Tabelle extrahieren?
CREATE TABLE [dbo].[WordForm]
(
[WordFormId] VARCHAR (20) NOT NULL,
[WordFormIdentity] INT IDENTITY (1, 1) NOT NULL,
[WordId] VARCHAR (20) NOT NULL,
[Definition] VARCHAR (MAX) NULL,
PRIMARY KEY CLUSTERED ([WordFormId] ASC),
CONSTRAINT [FK_WordFormPos]
FOREIGN KEY ([PosId]) REFERENCES [dbo].[Pos] ([PosId]),
CONSTRAINT [FK_WordFormWord]
FOREIGN KEY ([WordId]) REFERENCES [dbo].[Word] ([WordId])
);
Ich mag die Definition Spalte entfernen und es mit einer Tabelle ersetzen mit einer Definition für jede Zeile:
CREATE TABLE [dbo].[Definition]
(
[DefinitionId] INT IDENTITY (1, 1) NOT NULL,
[WordFormId] VARCHAR (20) NOT NULL,
[Text] VARCHAR (30) NOT NULL,
PRIMARY KEY CLUSTERED ([SynonymId] ASC),
CONSTRAINT [FK_DefinitionWordForm]
FOREIGN KEY ([WordFormId]) REFERENCES [dbo].[WordForm] ([WordFormId])
);
Kann jemand vorschlagen, wie ich die Daten aus Definition
Säule und Einsatz erfolgen kann es in die Textspalte der Zeilen in der neuen Tabelle Definition
? Die Hoffnung auf eine Lösung, die auch prüfen wird Definition
ist nicht null.
Vielen Dank.
Verwenden Sie einfach eine String-Splitting-Funktion, um sie von Komma zu trennen, die Daten zu trimmen und die Nullen herauszufiltern. Gibt es einen bestimmten Teil, mit dem du Probleme hast? –
[Aaron Bertrand zur Rettung!] (Http://sqlperformance.com/2016/03/sql-server-2016/string-split) –
Gute Entscheidung zu normalisieren! – ATC