Qualsiasi motivo per cui SQL-92 è cambiato *,? in%, _?

5

Conosci qualche motivo per cui lo standard SQL-92 ha cambiato glob pattern caratteri jolly da * e ? (SQL-89) a % e _ ?

Attualmente devo eseguire conversioni di maschere per consentire agli utenti di cercare dati con * e ? che già conoscono dal file system. Inoltre, % e _ hanno bisogno di eseguire l'escape più frequentemente, poiché tendono ad apparire nei campi dati più frequentemente di * o ? . Che cosa stava rompendo lo standard glob per?

    
posta miroxlav 03.02.2015 - 13:55
fonte

2 risposte

8

SQL risale ai primi anni '70. Ha all'incirca la stessa età di UNIX. Il nome di file in stile UNIX che combina i caratteri jolly non è diventato onnipresente fino a molto più tardi.

* era già un carattere riservato in SQL, come in SELECT * FROM Customer . Avere anche un carattere jolly sarebbe stato probabilmente confuso.
E la standardizzazione - dei caratteri jolly o di qualsiasi altra cosa - tiene sempre in considerazione la "prior art", ovvero i fornitori di database che stavano già facendo tra la fine degli anni '80 e l'inizio degli anni '90. Se nessuno utilizzava * e ? come caratteri jolly che corrispondono a modelli, non c'è modo che quei caratteri possano entrare nello standard (i distributori sono, dopotutto, rappresentati nel comitato degli standard).

Vorrei anche notare che le espressioni di corrispondenza del modello ( LIKE ) non sono esattamente analoghe al globbing del file system. La funzionalità di espressione regolare trovata in sed , awk e molte altre utilità UNIX IMO rappresentano un analogo molto migliore.
Quindi una domanda migliore potrebbe essere, perché SQL non ha adottato espressioni regolari per la corrispondenza dei pattern?

    
risposta data 03.02.2015 - 15:06
fonte
9

Microsoft Access era basato su un motore di database chiamato Jet che offerto * e ? come caratteri jolly per LIKE . Questi non sono mai stati parte dello standard SQL. Ad un certo punto, Microsoft ha incorporato una modalità SQL-92 che offriva i caratteri standard.

L'uso di % e _ risale a molto lontano. La mia copia di An Introduction to Database Systems di C.J. Date (4a edizione, 1986) la descrive in questo modo. IBM DB2 (apparso per la prima volta nel 1983 circa) l'aveva, e non sarei sorpreso se i predecessori SQL / DS (1981) e System R (dalla metà alla fine degli anni '70) lo facessero. SQL in quei prodotti è diventato la base per gli standard.

    
risposta data 03.02.2015 - 15:08
fonte

Leggi altre domande sui tag