Alcuni anni fa ho dovuto scrivere un motore di traduzione; lo si nutre di un set di sql e si traduce nel dialetto del motore attualmente connesso. Il mio motore funziona su Postgres (AKA PostgreSql), Ingres, DB2, Informix, Sybase e Oracle - oh e ANTS. Francamente, Oracle è il mio preferito (più su quello che segue) ... Sfortunatamente per te, mySql e SQL Server non sono nella lista (al momento nessuno dei due era considerato un RDBMS serio - ma i tempi cambiano).
senza tener conto della qualità o le prestazioni del motore - e la facilità di fare e di ripristino di backup - qui ci sono le principali aree di differenza:
- tipi di dati
- limiti
- invalidi
- riservati parole
- semantica null (vedere di seguito)
- semantica di quotazione (virgoletta singola, virgoletta doppia ", o e ither)
- semantica completamento delle istruzioni
- semantica funzione
- data la manipolazione (comprese le parole chiave costante come 'adesso' e la funzione di input/output i formati)
- se commenti in linea sono consentiti
- massimo attributo lunghezze
- numero massimo di attributi
- semantica di connessione/paradigma di sicurezza.
Senza annoiarvi su tutti i dati di conversione, ecco un campione per un tipo di dati, LVARCHAR:
oracolo = varchar (% x) Sybase = testo Postgres db2 = "long varchar" Informix = LVARCHAR = varchar (% x) ants = varchar (% x) ingres = varchar (% x,% y)
Il più grosso di tutti, a mio avviso, è la gestione nulla; Oracle SILENTLY converte le stringhe di input vuote in valori nulli. ... Da qualche parte, molto tempo fa, ho letto una recensione che qualcuno aveva fatto su "The Seventeen Meanings of Null" o qualcosa del genere e il vero punto è che i null sono molto preziosi e la distinzione tra una stringa nulla e una stringa vuota è utile e non banale! Penso che Oracle abbia commesso un errore enorme su questo; nessuno degli altri ha questo comportamento (che io abbia mai visto).
Il mio secondo preferito era ANTS perché, a differenza di tutti gli altri, hanno FORFORATO le regole stupide per una sintassi perfetta che nessun altro fa e mentre potrebbero essere l'unica azienda DB a fornire la perfetta aderenza allo standard, sono anche un dolore reale nel culo per scrivere il codice per.
Di gran lunga il mio preferito è Postgres; è molto veloce in situazioni _real_world_, ha un grande supporto ed è open source/gratuito.
fonte
2008-10-20 00:46:11
Oracle consiglia di utilizzare varchar2 non varchar. –
Grazie per l'aggiornamento, Mark. Mi assicurerò che venga propagato nuovamente nel motore e prendo un momento per cercare anche altri aggiornamenti. RT –