sql >> Databasteknik >  >> RDS >> Sqlserver

Returnera alla icke-beräknade kolumner från en tabell i SQL Server

I SQL Server kan du använda sys.columns systemkatalogvy för att returnera en lista över icke-beräknade kolumner från en tabell.

Med "icke beräknade" menar jag helt enkelt kolumner som inte är beräknade kolumner.

Exempel

Här är ett exempel att visa.

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;

Resultat:

+-------------+-------------+--------------+---------------+
| 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 returnerar många kolumner, så jag har begränsat dem här till bara en handfull.

I det här fallet är tabellnamnet Products . Om jag inte filtrerade efter det skulle jag få en mycket stor lista med kolumner från alla tabeller (inklusive systemtabeller), vyer, tabellvärderade funktioner etc.

Jag inkluderade is_computed kolumn här bara så att du kan se att dessa kolumner har 0 i den kolumnen.

Jag råkar veta att den här tabellen har en beräknad kolumn som heter TotalValue . Här är frågan igen, men den här gången returnerar alla kolumner (inklusive beräknade kolumner).

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';

Resultat:

+-------------+-------------+--------------+---------------+
| 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. Hur man listar tabeller i MySQL och MariaDB

  2. mysqldump bästa praxis:Del 1 – MySQL-förutsättningar

  3. Lista tabeller i ett PostgreSQL-schema

  4. Upptäck om ett värde innehåller minst en numerisk siffra i Oracle