Gibt es irgendwelche Vorteile bei der Verwendung von sql_variant gegenüber varchar in SQL Server?

Ich habe derzeit eine Datenbanktabelle wie folgt eingerichtet (EAV - Geschäftsgründe sind gültig):

ID - int (PK)Schlüssel - Unikat, varchar (15)Wert - varchar (1000)

Dadurch kann ich gemischte Werte als Schlüssel / Wert-Paare in meine Datenbank einfügen. Zum Beispiel:

1   | 'Some Text'      | 'Hello World'
2   | 'Some Number'    | '123456'
etc.

In meinem C # -Code verwende ich ADO.Net mitreader.GetString(2); Um den Wert als Zeichenfolge abzurufen, muss mein Code ihn bei Bedarf an einer anderen Stelle konvertieren. Beispiel:Int32.ParseInt(myObj.Value);. Ich möchte meine Tabelle erweitern, indem ich möglicherweise die Wertespalte in a änderesql_variant Datentyp, aber ich weiß nicht, was der Nutzen davon sein würde? Grundsätzlich gibt es einen Vorteil zu haben meineWert Spalte sein vonsql_variant vsvarchar(1000)?

Um es klarer zu machen, habe ich irgendwo gelesen, dass sql_variant als nvarchar (4000) an den Client zurückgegeben wird, der den Aufruf ausführt (autsch)! Aber konnte ich es nicht auf seinen Typ umwandeln, bevor ich es zurückgab? Offensichtlich müsste mein Code angepasst werden, um den Wert als Objekt anstelle eines Zeichenfolgenwerts zu speichern. Ich denke, was sind die Vor- / Nachteile der Verwendungsql_variant gegen einen anderen Typ in meiner aktuellen Situation? Oh, und es ist erwähnenswert, dass alles, was ich speichern möchte, Datumsangaben, Zeichenfolgen und numerische Typen (int, decimal, etc) in der Wertespalte sind. Ich habe nicht vor, Bilder oder ähnliches zu speichern.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage