webForumDet fria alternativet
Logga in / Bli medlem

AS vs. =

Databaser & SQL

8 svar · 258 visningar · startad av Erik Juhlin

Medlem sedan maj 200010 687 inlägg
Trådstart#1

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

Medlem sedan juni 200032 967 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

Medlem sedan maj 200010 687 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..?

Medlem sedan juni 200032 967 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

Medlem sedan maj 200010 687 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...

Medlem sedan juni 200032 967 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. ;)

Medlem sedan maj 200010 687 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.

Medlem sedan dec. 200012 464 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
Medlem sedan maj 200010 687 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

258 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)