sql >> Database teknologi >  >> RDS >> Sqlserver

Returner alle ikke-beregnede kolonner fra en tabel i SQL Server

I SQL Server kan du bruge sys.columns systemkatalogvisning for at returnere en liste over ikke-beregnede kolonner fra en tabel.

Med "ikke-beregnet" mener jeg blot kolonner, der ikke er beregnede kolonner.

Eksempel

Her er et eksempel til at demonstrere.

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 returnerer mange kolonner, så jeg har indsnævret dem her til kun en håndfuld.

I dette tilfælde er tabelnavnet Products . Hvis jeg ikke filtrerede efter det, ville jeg få en meget stor liste over kolonner fra alle tabeller (inklusive systemtabeller), visninger, tabelværdierede funktioner osv.

Jeg inkluderede is_computed kolonne her, bare så du kunne se, at disse kolonner har 0 i den kolonne.

Jeg ved tilfældigvis, at denne tabel har en beregnet kolonne kaldet TotalValue . Her er forespørgslen igen, men denne gang returnerer alle kolonner (inklusive beregnede kolonner).

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. RMAN-kommandoer fejler med ORA-00904:"BS".."GUID":ugyldig identifikator

  2. Sådan fungerer SIGN() i MariaDB

  3. Skift kolonnetype og sæt ikke null

  4. Postgres FOR LOOP