Vor ein paar Jahren musste ich eine Übersetzungs-Engine schreiben; Sie füttern es eine Menge von SQL und es wird in den Dialekt der aktuell verbundenen Engine übersetzt. Meine Engine arbeitet auf Postgres (AKA PostgreSql), Ingres, DB2, Informix, Sybase und Oracle - oh und ANTS. Ehrlich gesagt, ist Oracle mein unbeliebtester (mehr dazu weiter unten) ... Leider sind mySql und SQL Server für Sie nicht auf der Liste (zu der Zeit wurde keines als seriöses RDBMS betrachtet - aber die Zeiten ändern sich).
Ohne Rücksicht auf die Qualität oder Leistung des Motors - und die einfache Herstellung und Sicherungen wiederherstellen - hier sind die wichtigsten Bereiche der Unterschied:
- Datentypen
- Grenzen
- Invaliden
- vorbehalten Wörter
- null Semantik (siehe unten)
- Zitat Semantik (einfaches Zitat ', doppelte Anführungszeichen "oder e ither)
- Anweisungsende-Semantik
- Funktionssemantik
- Datum Handhabung (einschließlich konstanten Schlüsselwörter wie ‚jetzt‘ und die Eingabe/Ausgabefunktion Formate)
- ob Inline-Kommentare erlaubt sind
- maximale Attributlängen
- maximale Anzahl der Attribute
- Verbindungssemantik/Sicherheitsparadigma.
Ohne Sie alle Conversion-Daten zu langweilig, hier ist ein Beispiel für einen Datentyp, lvarchar:
Orakel = varchar (% x) sybase = text db2 = "long varchar" Informix = lvarchar postgres = varchar (% x) ants = varchar (% x) ingres = varchar (% x,% y)
Der größte Deal von allen, meiner Meinung nach, ist null Behandlung; Oracle SILENTLY konvertiert leere Eingabezeichenfolgen in Nullwerte. ... Irgendwann, vor langer Zeit, las ich einen Artikel, den jemand über "Die siebzehn Bedeutungen von Null" geschrieben hatte, und der wirkliche Punkt ist, dass Nullen sehr wertvoll sind und der Unterschied zwischen einer Null-Zeichenkette und einer leeren Zeichenkette ist nützlich und nicht trivial! Ich denke Oracle hat einen großen Fehler gemacht. keiner der anderen hat dieses Verhalten (das ich jemals gesehen habe).
Mein zweitletzter Favorit war ANTS, weil sie im Gegensatz zu allen anderen die albernen Regeln für perfekte Syntax, die absolut niemand sonst tut, und obwohl sie vielleicht die einzige DB-Firma sind, die perfekte Einhaltung des Standards bieten, sind sie auch ein königlicher Schmerz im Hintern, um Code zu schreiben.
Weit weg ist mein Liebling Postgres; Es ist sehr schnell in _real_world_ Situationen, hat große Unterstützung und ist Open Source/Free.
Oracle empfiehlt die Verwendung von varchar2 nicht varchar. –
Danke für das Update, Mark. Ich werde dafür sorgen, dass es wieder in die Engine eingespeist wird - und nimm dir einen Moment Zeit, um nach weiteren Updates zu suchen. RT –