On 18 Mar 2018, at 9:31am, Moritz Bruder <[email protected]> wrote:
> I'm not exactly sure what the SQL standard says
As best I can find, SQL92 does not specify what happens when you choose an AS
clause giving a value name the same as a column. It doesn't go into much
detail at all about applying "AS" to a value.
It does go into more detail about applying "AS" to a table name. Section 5.4
paragraph 12 it says
An <identifier> that is a <correlation name> is associated with
a table within a particular scope. The scope of a <correlation
name> is either a <select statement: single row>, <subquery>, or
<query specification> (see Subclause 6.3, "<table reference>").
Scopes may be nested. In different scopes, the same <correlation
name> may be associated with different tables or with the same
table.
We can apply this to a 'correlation name' for a value rather than a table. If
I read this right, it suggests you're right: the use of 'name' should equate to
your definition '(test.name || '!')', not to 'test.name'.
However if I see code where the programmer picked an alias the same as a real
column name I'd question the quality of that programmer's thinking. I get a
"Do not do this." feeling.
Cue comment from the development team about backward compatibility.
Simon.
_______________________________________________
sqlite-users mailing list
[email protected]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users