Udostępnij za pośrednictwem


UNRESOLVED_COLUMN, klasa błędów

SQLSTATE: 42703

Nie można rozpoznać kolumny, zmiennej lub rutynowego parametru o nazwie <objectName> .

Ta klasa błędów ma następujące pochodne klasy błędów.

WITHOUT_SUGGESTION

Parametry

  • objectName: nazwa kolumny lub parametru, którego nie można rozpoznać.

WITH_SUGGESTION

Czy masz na myśli jedną z następujących czynności? [<proposal>]

Parametry

  • objectName: nazwa kolumny lub parametru, którego nie można rozpoznać.
  • propozycja: Rozdzielona przecinkami lista potencjalnych kandydatów.

Wyjaśnienie

Usługa Azure Databricks zgłasza ten błąd za każdym razem, gdy nie może zidentyfikować identyfikatora w kontekście, w którym oczekuje kolumny, aliasu kolumny lub parametru funkcji.

Istnieje kilka przyczyn tego błędu:

  • Błąd pisowni w nazwie kolumny lub nazwie parametru.
  • Faktycznie zamierzasz określić literał ciągu, a nie identyfikator.
  • Nazwa kolumny została zmieniona lub porzucona przy użyciu polecenia ALTER TABLE
  • Kolumna nie została uwzględniona na liście wyboru podzapytania.
  • Nazwa kolumny została zmieniona przy użyciu aliasu tabeli lub aliasu kolumny.
  • Odwołanie do kolumny jest skorelowane i nie określono parametru LATERAL.
  • Odwołanie do kolumny jest obiektem, który nie jest widoczny, ponieważ jest wyświetlany wcześniej na tej samej liście wyboru lub w podzapytaniu skalarnym.

Czynności zapobiegawcze

Ograniczenie ryzyka błędu zależy od przyczyny:

  • Czy pisownia nazwy i kwalifikatorów jest nieprawidłowa?

    Porównaj z kolumnami oferowanymi w elemecie objectList i popraw pisownię.

  • Czy zamiast tego chodziło o określenie literału ciągu?

    Ująć literał w pojedynczy cudzysłów, a nie znaczniki wsteczne (grób akcentowy).

  • Czy kolumna została pominięta z podzapytania?

    Dodaj kolumnę do listy wyboru podzapytania.

  • Czy odwołujesz się do kolumny we wcześniejszej relacji w tej samej klauzuli from?

    LATERAL Dodaj słowo kluczowe przed podzapytaniem z nierozwiązaną kolumną. Obsługa skorelowanych zapytań jest ograniczona. Może być konieczne ponowne zapisywanie (derelowanie) zapytania.

  • Nie jest jasne, dlaczego nie można rozpoznać kolumny lub pola?

    Aby uzyskać szczegółowy opis rozpoznawania nazw, zobacz Kolumna, pole, parametr i rozdzielczość zmiennych.

Przykłady

> 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