webForumDet fria alternativet

AS vs. =

8 svar · 258 visningar · startad av Erik Juhlin

Erik JuhlinMedlem sedan maj 20007 625 inlägg
#1

Vad är skillnaden på att skriva foo = bar och bar AS foo?
Är något av dem standard och något inte?

@ndersMedlem sedan juni 200026 914 inlägg
#2

SELECT foo = bar FROM tabellen bör returnera ett booleskt värde som visar huruvida fältet foo innehåller samma sak som fältet bar. Det är alltså inte jämförbart med att använda AS, som du gör vid aliastilldelning.

red: en test visar att det inte riktigt är så det fungerar. Vid =-användning får faktiskt fältet bar alias foo, men foo och bar måste vara fält som finns i tabellen.

Jag har använt SQL Server i min test.

Mvh

Erik JuhlinMedlem sedan maj 20007 625 inlägg
#3

Det är väl samma sak åt andra hållet. Skriver man bar AS foo så måste ju bar finnas i tabellen även där..?

@ndersMedlem sedan juni 200026 914 inlägg
#4

Notera min redigering. ;)

När du använder AS kan du ge vilket alias du vill. Med = stjäl du kolumnnamn ifrån tabellen, och dessutom är "aliastilldelningen" i motsatt riktning.

Min uppfattning är i alla fall att de två olika inte går att jämföra.

Mvh

Erik JuhlinMedlem sedan maj 20007 625 inlägg
#5

Jag kan skriva whatever = foo. foo måste finnas idatabasen, men inte whatever.

Varför går de inte att jämföra? Som jag ser det gör de precis samma sak...

@ndersMedlem sedan juni 200026 914 inlägg
#6

Okej, det kanske är jag som missuppfattade.

Då är det nog så att det funkar likadant fast baklänges?
Då går de att jämföra. Om de gör samma sak.

Jag röstar på att AS är det man bör använda, men det betyder ju ingenting. Jag lämnar över till någon som vet hur standarderna ser ut. ;)

Erik JuhlinMedlem sedan maj 20007 625 inlägg
#7

Tack, det är bättre att någon som kan det svarar istället för att man får en massa gissningar till svar.

LarsGMedlem sedan dec. 200012 465 inlägg
#8

SQL server gör fel som tolkar

exression = expression

som en tilldelning/namngivning. Enligt standard är det som @nders säger, ovanstående skall betraktas som ett booleskt uttryck som kan returnera true/false/unknown.

Om man vill namnge ett uttryck så skall man använda

expression AS name

om man vill tilldela en variabel så skall man använda

set @v = expression
Erik JuhlinMedlem sedan maj 20007 625 inlägg
#9

Tack för svaret LarsG! :)

Och ta inte illa upp @nders. Du är helt enkelt bara kass på SQL. Missa FROM... :OO

Genererad på 382 ms · cache AV · v20260730165559-full.f96bc7eb