College SQL-Klasse mit dem Buch "SQL Fundamentals" von John J. Patrick. Im dritten Kapitel spricht er über die Verwendung einer "Tabelle von Konstanten", um Spalten zu einer select-Anweisung hinzuzufügen, wobei alle Zeilen den gleichen Wert haben.
Wenn Sie beispielsweise die Tabelle "Zeichen" haben, wie folgt:
first_name last_name dept_code
----------- ---------- -------------------
Fred Flintstone ROCKS
Barney Rubble ROCKS
Wilma Flintstone FACEPALMING_AT_FRED
und Sie möchten ein SELECT, das allen Zeilen eine Spalte "Heimatstadt" mit dem Wert "BEDROCK" hinzufügt. Er empfiehlt, eine zweite Tabelle in der Datenbank "temp" mit zu erstellen
hometown
--------
BEDROCK
und dann tun
SELECT first_name, last_name, dept_code, hometown FROM characters, temp
Die Idee ist, dass dadurch vermieden wird, dass Zeichenfolgenkonstanten in die SELECT-Anweisung eingefügt werden. Wenn Sie viele SELECTs haben, die dieselben Konstanten benötigen, ist es einfacher, eine Tabelle zu aktualisieren als fünfzig Abfragen.
Die Sache ist, ich arbeite seit fünfzehn Jahren mit SQL-Datenbanken und habe diese Konstruktion noch nie gesehen. Ist es etwas völlig Häufiges, das ich gerade verpasst habe, oder ist es etwas, das ich aus meinem Gedächtnis löschen kann, nachdem diese Aufgabe beendet ist?
quelle
Nach meiner Erfahrung habe ich selten Code entwickelt, bei dem der Ergebnismenge eine Zeichenfolgenkonstante hinzugefügt wird. Die vorgeschlagene Lösung macht für mich keinen Sinn. Ich wäre sehr misstrauisch gegenüber der Codequalität eines Systems, das dies getan hat. Wenn ich mir dieses Beispiel anschaue, würde ich es wie folgt codieren.
Ich würde seinen Ansatz nach dieser Übung vergessen. Damit dies funktioniert, benötigen Sie vor jeder Abfrage eine Tabelle oder Spalte für jede Konstante oder ein Update. Ich würde hoffen, dass irgendwann eine Adresstabelle hinzugefügt wird, aus der die Heimatstadt mit einem geeigneten Join ausgewählt werden kann.
quelle
Wenn ich eine Konstante benötige, würde ich eine einfache skalare UDF in Betracht ziehen (SQL Server, aber andere RDBMS haben dieselbe). Ich habe dies getan, um "magische Zahlen" und CR / LF-Zeichenfolgen und dergleichen zu erfassen, wenn die Umstände dies erfordern, dass dies in der Datenbank vorhanden ist
Ein Beispiel aus SO: https://stackoverflow.com/a/2947405/27535
Das Beispiel, das Sie gegeben haben, scheint ein bisschen sinnlos zu sein. Wenn konstant, warum zu einer Ergebnismenge hinzufügen? Es sei denn, es handelt sich um einen NULL-Ersatzwert oder dergleichen.
quelle