In SQL Server puoi usare sys.columns
vista del catalogo di sistema per restituire un elenco di colonne non calcolate da una tabella.
Per "non calcolate", intendo semplicemente colonne che non sono colonne calcolate.
Esempio
Ecco un esempio da dimostrare.
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;
Risultato:
+-------------+-------------+--------------+---------------+ | Column | Data Type | max_length | is_computed | |-------------+-------------+--------------+---------------| | ProductID | int | 4 | 0 | | ProductName | varchar | 255 | 0 | | Quantity | smallint | 2 | 0 | | Price | money | 8 | 0 | +-------------+-------------+--------------+---------------+
Il sys.columns
view restituisce molte colonne, quindi le ho ristrette qui a solo una manciata.
In questo caso, il nome della tabella è Products
. Se non avessi filtrato in base a ciò, otterrei un elenco molto ampio di colonne da tutte le tabelle (comprese le tabelle di sistema), viste, funzioni con valori di tabella, ecc.
Ho incluso is_computed
colonna qui solo per poter vedere che queste colonne hanno 0
in quella colonna.
Mi capita di sapere che questa tabella ha una colonna calcolata chiamata TotalValue
. Ecco di nuovo la query, ma questa volta restituisce tutte le colonne (incluse le colonne calcolate).
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';
Risultato:
+-------------+-------------+--------------+---------------+ | 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 | +-------------+-------------+--------------+---------------+