Arne Vajhøj wrote:
> On 7/26/2011 4:51 AM, Stig Johansen wrote:
>>
>> Jeg vil dog påpege:
>> ' bruger man til tekst konstanter.
>> " bruger man til 'upæne navne'.
>
> Ifølge ANSI SQL.
Ja.
> Men i MySQL er "xxx" default det samme som 'xxx'.
Og det betragter jeg som en fejl(kilde).
> Man skal slå ANSI quotes til at få standard opførslen.
Ditto i MS SQLServer, men det burde (IMO) være omvendt.
>> Bruger man udelukkende 'pæne navne' er der ikke brug for hverken " eller
>> ` eller [] som MS indførte med MS SQLServer 7.0, og gav FEJL ved
>> fungerende systemer efter 'opgradering' fra 6.5 til 7.0.
>
> [] virker i alle SQLServer versioner til og med 2008 R2.
Ja, men det var ikke min pointe.
Det var et surt opstød, som jeg husker som i går.
Jeg havde lavet et fungerende DW under MS SQLServer 6.5 med tilhørende
services (udtræk fra mainframe og opdatering).
Efter flere års fejlfri og 24/7 operation blev jeg ringet op, for nu virkede
pludselig ikke.
Programmerne var ikke ændret, så jeg fattede ikke en hujende bjælde, for
kunden havde heller ikke ændret noget.
Godt så - krudte dytten fra Sjælland til Jylland for at se på sagerne.
Ganske rigtigt mystiske fejl om forkert syntax osv - rive mig selv i håret!!
Det viste sige senere at IT-chefen ikke vidste hvad IT afdelingen rodede
med, og en 'kær medarbejder' havde foretaget en (hjernedød) 'opgradering'
fra 6.5 -> 7.0.
Her havde MS foretaget det snedige trick at automatisk disable ANSI Quotes,
og indført de her [ ] - TAK MS!.
Og hvorfor husker jeg det som i går?
Jo, for jeg kunne ikke forklare IT-chefen at det var deres egen skyld, så
jeg måtte selv æde 2 gange færgebiletter, kørsel, benzin samt 12 timers
'investigation' - TAK MS!.
>> (Nævner *slet* ikke Oracles højst besynderlige Join syntax, som har givet
>> anledning til meget ekstra arbejde
.
>
> Nu er jeg ikke specielt god til Oracle, men jeg troede at de supporterede
> standard join syntax siden 9i.
Tid er relativt
Når man har været i branchen i > 30 år, så føles alting som i går
Men jo, jeg henviser til pre 9x, hvor jeg bla. lavede noget til 'posten' med
både MS SQLServer (6.5) og Oracle 8.17 (SVJH).
Det var squ lidt irriterende at lave kode a la:
IF Oracle then
SQL = 'SELECT.... oracle syntax' ;
IF MSSQL then
SQL = 'SELECT.... standard syntax' ;
PS: Ved at undgå disse 'lock-ins' med automatisk genererede specialiteter,
kan man til en vis grad holde sig til SQL Standard.
--
Med venlig hilsen
Stig Johansen