On 7/4/22 11:50 AM, John English wrote:
On 04/07/2022 16:21, Rick Hillegas wrote:
I'm afraid I don't understand your results. When I run your
experiment, "2" is the name and label of the second column of the
query "SELECT country,count(*) FROM customer GROUP BY country ORDER
BY country". Does the following give you what you want:
SELECT country,count(*) AS "count(*)" FROM customer GROUP BY
country ORDER BY country
What I'm after if I have "x AS y" is a way of getting "x". I
understood (incorrectly as it seems) that getColumnName() would give
"x" and getColumnLabel() would give "y".
As far as I can tell from experiments, both methods ALWAYS produce
identical results. So I'm no longer sure why two different methods exist.
As I understand the SQL Standard, the columns in query expressions (like
SELECT statements) have "derived column names". The SQL Standard has no
concept of a separate label name. The AS clause simply overrides the
derived column name. The original authors of the ResultSetMetaData
interface clearly imagined some distinction between getColumnName() and
getColumnLabel(), but that distinction is not in the SQL Standard and it
isn't clarified by either the ResultSetMetaData javadoc or the JDBC 4.3
spec. Maybe there is some corresponding distinction in the older ODBC
spec which inspired the first JDBC spec.
In any event, as you've noticed, getLabelName() returns the same value
as getColumnName() in Derby.