Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Връщане на всички неизчислени колони от таблица в SQL Server

В SQL Server можете да използвате sys.columns изглед на системния каталог, за да върне списък с неизчислени колони от таблица.

Под „неизчислени“ имам предвид просто колони, които не са изчислени колони.

Пример

Ето пример за демонстрация.

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;

Резултат:

+-------------+-------------+--------------+---------------+
| 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 връща много колони, така че ги стесних тук само до шепа.

В този случай името на таблицата е Products . Ако не филтрирах по това, щях да получа много голям списък с колони от всички таблици (включително системни таблици), изгледи, функции с таблица и т.н.

Включих is_computed колона тук, само за да можете да видите, че тези колони имат 0 в тази колона.

Случайно знам, че тази таблица има изчислена колона, наречена TotalValue . Ето отново заявката, но този път връща всички колони (включително изчислените).

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

Резултат:

+-------------+-------------+--------------+---------------+
| 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Общ преглед на оператора PRINT в SQL Server

  2. T-SQL подзаявка Макс (дата) и присъединявания

  3. Запознаване с вашето работно натоварване на SQL Server

  4. Как да върнете списък с тригерни събития в SQL Server

  5. Как да активирате групово разрешение в SQL Server