sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man får en beräknad kolumns definition i SQL Server med T-SQL

I SQL Server kan du använda T-SQL för att få definitionen för en beräknad kolumn genom att fråga sys.computed_columns systemkatalogvy.

Exempel 1 – Returnera en beräknad kolumn

Här är ett exempel som jag körde i min testmiljö. I det här fallet har jag begränsat resultaten till bara en beräknad kolumn.

SELECT definition
FROM sys.computed_columns
WHERE name = 'TotalValue';

Resultat:

+----------------------+
| definition           |
|----------------------|
| ([Quantity]*[Price]) |
+----------------------+

Om du har flera beräknade kolumner med samma namn kan du också lägga till tabellnamnet i WHERE klausul:

SELECT definition
FROM sys.computed_columns
WHERE name = 'TotalValue'
AND OBJECT_NAME(object_id) = 'Products';

Exempel 2 – Returnera alla beräknade kolumner

I det här exemplet returnerar jag alla beräknade kolumner, tillsammans med deras definition.

SELECT 
  OBJECT_NAME(object_id) AS [Table],
  name AS [Computed Column],
  definition
FROM sys.computed_columns;

Resultat:

+----------+-------------------+--------------------------------------+
| Table    | Computed Column   | definition                           |
|----------+-------------------+--------------------------------------|
| Person   | FullName          | (concat([FirstName],' ',[LastName])) |
| Products | TotalValue        | ([Quantity]*[Price])                 |
+----------+-------------------+--------------------------------------+

Exempel 3 – Inkludera schemat

I det här exemplet går jag med sys.objects för att inkludera schemat i resultaten.

SELECT 
  SCHEMA_NAME(o.schema_id) AS [Schema],
  OBJECT_NAME(cc.object_id) AS [Table],
  cc.name AS [Computed Column],
  cc.definition
FROM sys.computed_columns cc
INNER JOIN sys.objects o
ON o.object_id = cc.object_id;

Resultat:

+----------+----------+-------------------+--------------------------------------+
| Schema   | Table    | Computed Column   | definition                           |
|----------+----------+-------------------+--------------------------------------|
| dbo      | Person   | FullName          | (concat([FirstName],' ',[LastName])) |
| dbo      | Products | TotalValue        | ([Quantity]*[Price])                 |
+----------+----------+-------------------+--------------------------------------+

  1. skillnaden mellan förklara plan och genomförandeplan

  2. finns det en group_concat-funktion i ms-access?

  3. slå samman två olika tabeller och ta bort dubblerade poster

  4. Skapa en länkad server i SQL Server (T-SQL-exempel)