sql >> Databáze >  >> RDS >> Sqlserver

Vrátit všechny nepočítané sloupce z tabulky na serveru SQL Server

V SQL Server můžete použít sys.columns zobrazení systémového katalogu pro vrácení seznamu nevypočítaných sloupců z tabulky.

Výrazem „nevypočítané“ mám na mysli jednoduše sloupce, které nejsou spočítanými sloupci.

Příklad

Zde je příklad k demonstraci.

SELECT
  name AS [Column],
  TYPE_NAME(user_type_id) AS [Data Type],
  max_length,
  is_computed
FROM sys.columns
WHERE OBJECT_NAME(object_id) = 'Products'
AND is_computed = 0;

Výsledek:

+-------------+-------------+--------------+---------------+
| Column      | Data Type   | max_length   | is_computed   |
|-------------+-------------+--------------+---------------|
| ProductID   | int         | 4            | 0             |
| ProductName | varchar     | 255          | 0             |
| Quantity    | smallint    | 2            | 0             |
| Price       | money       | 8            | 0             |
+-------------+-------------+--------------+---------------+

sys.columns view vrací mnoho sloupců, takže jsem je zde zúžil jen na hrstku.

V tomto případě je název tabulky Products . Pokud bych podle toho nefiltroval, získal bych velmi velký seznam sloupců ze všech tabulek (včetně systémových tabulek), zobrazení, funkcí s hodnotou tabulky atd.

Zahrnul jsem is_computed zde jen proto, abyste viděli, že tyto sloupce mají 0 v tomto sloupci.

Náhodou vím, že tato tabulka má vypočítaný sloupec nazvaný TotalValue . Zde je dotaz znovu, ale tentokrát vrací všechny sloupce (včetně vypočítaných sloupců).

SELECT
  name AS [Column],
  TYPE_NAME(user_type_id) AS [Data Type],
  max_length,
  is_computed
FROM sys.columns
WHERE OBJECT_NAME(object_id) = 'Products';

Výsledek:

+-------------+-------------+--------------+---------------+
| Column      | Data Type   | max_length   | is_computed   |
|-------------+-------------+--------------+---------------|
| ProductID   | int         | 4            | 0             |
| ProductName | varchar     | 255          | 0             |
| Quantity    | smallint    | 2            | 0             |
| Price       | money       | 8            | 0             |
| TotalValue  | money       | 8            | 1             |
+-------------+-------------+--------------+---------------+

  1. Entity Framework Core 2.0:Jak jednou nakonfigurovat abstraktní základní třídu

  2. Víceřádkové aktualizace PostgreSQL v Node.js

  3. SQL řádky do sloupců

  4. Vyhledat konkrétní hodnotu ve všech polích ve všech tabulkách (Oracle)