Delen via


foutklasse UNRESOLVED_COLUMN

SQLSTATE: 42703

Een kolom-, variabele- of routineparameter met de naam <objectName> kan niet worden omgezet.

Deze foutklasse heeft de volgende afgeleide foutklassen.

WITHOUT_SUGGESTION

Parameters

  • objectName: de naam van de kolom of parameter die niet kan worden omgezet.

WITH_SUGGESTION

Bedoelde u een van de volgende? [<proposal>]

Parameters

  • objectName: de naam van de kolom of parameter die niet kan worden omgezet.
  • voorstel: een door komma's gescheiden lijst met potentiële kandidaten.

Uitleg

Azure Databricks genereert deze fout wanneer deze geen id kan identificeren in een context waarin een kolom-, kolomalias of functieparameter wordt verwacht.

Er zijn verschillende oorzaken voor deze fout:

  • Een spelfout in de kolomnaam of parameternaam.
  • U bedoelde eigenlijk een letterlijke tekenreeks op te geven en geen identifier.
  • De naam van de kolom is gewijzigd of verwijderd met behulp van ALTER TABLE
  • De kolom is niet opgenomen in de selectielijst van een subquery.
  • De naam van de kolom is gewijzigd met behulp van de tabelalias of de kolomalias.
  • De kolomreferentie is gecorreleerd en u hebt LATERALniet opgegeven.
  • De kolomverwijzing is naar een object dat niet zichtbaar is omdat het eerder in dezelfde selectielijst of binnen een scalaire subquery wordt weergegeven.

Oplossing

De beperking van de fout is afhankelijk van de oorzaak:

  • Is de spelling van de naam en kwalificaties onjuist?

    Vergelijk de kolommen die worden aangeboden in de objectList en corrik de spelling.

  • Wilde u in plaats daarvan een letterlijke tekenreeks opgeven?

    Plaats de letterlijke letterlijke aanhalingstekens tussen enkele aanhalingstekens en niet achtertekens (accent grave).

  • Is de kolom weggelaten uit een subquery?

    Voeg de kolom toe aan de selectielijst van de subquery.

  • verwijst u naar een kolom in een eerdere relatie in dezelfde component?

    Voeg het LATERAL trefwoord toe vóór de subquery met de niet-opgeloste kolom. Ondersteuning voor gecorreleerde query's is beperkt. Mogelijk moet u de query herschrijven (de-correleren).

  • Het is onduidelijk waarom de kolom of het veld niet kan worden omgezet?

    Raadpleeg kolom-, veld-, parameter- en variabeleresolutie voor een gedetailleerde beschrijving van naamresolutie.

Voorbeelden

> CREATE OR REPLACE TEMPORARY VIEW colors(cyan, magenta, yellow) AS VALUES(10, 20, 5);

-- The column reference has been misspelled
> SELECT jello FROM colors;
  [UNRESOLVED_COLUMN.WITH_SUGGESTION] A column or function parameter with name `jello` cannot be resolved.
  Did you mean one of the following? [`colors`.`cyan`, `colors`.`yellow`, `colors`.`magenta`]

-- Correct the spelling
> SELECT yellow FROM colors;
 5

-- The qualifier has been misspelled
> SELECT color.yellow FROM colors;
 [UNRESOLVED_COLUMN.WITH_SUGGESTION] A column or function parameter with name `color`.`yellow` cannot be resolved.
 Did you mean one of the following? [`colors`.`cyan`, `colors`.`yellow`, `colors`.`magenta`]

-- Correct the spelling
> SELECT colors.yellow FROM colors;
 5

-- Forgot to quote a literal
> SELECT hello;
 [UNRESOLVED_COLUMN.WITHOUT_SUGGESTION] A column or function parameter with name `hello` cannot be resolved.

-- Use single quotes
> SELECT 'hello';

-- Used the wrong quotes for a literal
> SELECT `hello`;
 [UNRESOLVED_COLUMN.WITHOUT_SUGGESTION] A column or function parameter with name `hello` cannot be resolved.

-- Use single quotes instead
> SELECT 'hello';

-- Column "got lost" in a subquery.
> SELECT cyan, magenta, yellow
    FROM (SELECT cyan, magenta
            FROM colors) AS c;
 [UNRESOLVED_COLUMN.WITH_SUGGESTION] A column or function parameter with name `yellow` cannot be resolved.
 Did you mean one of the following? [`c`.`cyan`, `c`.`magenta`]

-- Add the missing column
> SELECT cyan, magenta, yellow
    FROM (SELECT cyan, magenta, yellow
            FROM colors) AS c;
 10   20    5

-- Columns got renamed in the table alias
> SELECT cyan, magenta, yellow
    FROM (SELECT cyan, magenta, yellow
            FROM colors) AS c(c, m, y);
 [UNRESOLVED_COLUMN.WITH_SUGGESTION] A column or function parameter with name `cyan` cannot be resolved.
 Did you mean one of the following? [`c`.`c`, `c`.`m`, `c`.`y`];

-- Adjust the names
> SELECT c, m, y
    FROM (SELECT cyan, magenta, yellow
            FROM colors) AS c(c, m, y);
 10   20    5

-- A correlated reference
> SELECT * FROM colors, (SELECT cyan + magenta + yellow AS total_use);
 [UNRESOLVED_COLUMN.WITHOUT_SUGGESTION] A column or function parameter with name `cyan` cannot be resolved.

-- Add LATERAL to permit correation
> SELECT * FROM colors, LATERAL(SELECT cyan + magenta + yellow AS total_use);
 10    20     5    35

-- Or de-correlate
> SELECT *, cyan + magenta + yellow AS total_use FROM colors;
 10    20     5    35

-- A misspelled parameter name
> CREATE OR REPLACE FUNCTION plus(a INT, b INT) RETURNS INT RETURN arg1 + arg2;
 [UNRESOLVED_COLUMN.WITH_SUGGESTION] A column or function parameter with name `arg1` cannot be resolved.
 Did you mean one of the following? [`plus`.`a`, `plus`.`b`]

-- Fix the names
> CREATE OR REPLACE FUNCTION plus(a INT, b INT) RETURNS INT RETURN a + b;
> SELECT plus(1, 2);
 3