sql >> Databáze >  >> RDS >> Oracle

Zřetězení čísel ve výrazu virtuálního sloupce vyvolá ORA-12899:hodnota je pro sloupec příliš velká

Vaše čísla nejsou omezena. S jednocifernými (kladnými) čísly vy vědět, že zřetězená délka může být pouze tři, ale virtuální sloupec musí být dostatečně velký pro jakékoli číslo – takže to vypadá, že umožňuje až 40 číslic pro model implicitního formátu (38 platných číslic, oddělovač desetinných míst a znaménko; lexikalizace uživatele @collspar ).

Omezení sloupce s čísly by se však neprojevilo v délce virtuálního sloupce – oba sloupce by byly NUMBER(1,0) stále ponechává zřetězení vyžadující 81 znaků. Převzetí podřetězce vygenerované hodnoty nebude také fungovat , v tomto případě získává ORA-12899: value too large for column "TEXT" (actual: 10, maximum: 40) . Dodání modelu formátu pro každý to_char() zavolat, např. z FM999 ), by fungovalo, ale omezuje hodnoty na obou stranách podtržítka, nikoli přímo na celkovou délku.

Pokud chcete omezit velikost sloupce, můžete jej přetypovat na stejný datový typ a velikost, což je jasnější:

text VARCHAR2(10) generated always as 
    (cast(to_char(id)||'_'||to_char(num) as VARCHAR2(10))) VIRTUAL



  1. Jak zastavit/spustit databázovou poštovní frontu na serveru SQL Server (T-SQL)

  2. Zkopírujte tabulky z jedné databáze do druhé na SQL Server

  3. Escaping hstore obsahuje operátory v příkazu JDBC Prepared

  4. Nelze se připojit k databázi mysql?