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

3 måder at finde ud af, om en kolonne er en beregnet kolonne i SQL Server

Denne artikel præsenterer tre måder at bruge T-SQL til at finde ud af, om en kolonne er en beregnet kolonne i SQL Server.

Dette er til, når du kender kolonnenavnet, men du ikke ved, om det er en beregnet kolonne.

Funktionen COLUMNPROPERTY()

COLUMNPROPERTY() funktion returnerer information om en given kolonne.

En af egenskaberne, der accepteres som argument af denne funktion, kaldes IsComputed . Du får et 1, hvis kolonnen er beregnet, og et 0, hvis det ikke er det.

SELECT COLUMNPROPERTY( OBJECT_ID('dbo.Products'), 'TotalValue', 'IsComputed') AS [Computed Column?];

Resultat:

+----------------------------+| Beregnet kolonne? ||------------------------|| 1 |+---------------------------+

I dette tilfælde tjekkede jeg om TotalValue kolonne er en beregnet kolonne, og resultatet er 1 , hvilket betyder, at det er en beregnet kolonne.

Systemkatalogvisningen sys.computed_columns

sys.computed_columns systemkatalogvisningen indeholder en række for hver beregnet kolonne i databasen. Du kan derfor forespørge i denne visning for at se, om din kolonne er beregnet.

SELECT is_computed AS [Computed Column?]FROM sys.computed_columnsWHERE name ='TotalValue';

Resultat:

+----------------------------+| Beregnet kolonne? ||------------------------|| 1 |+---------------------------+

Du kan også bruge denne visning, hvis du kun kender tabellens navn. Hvis du ikke kender navnet på kolonnen, men du prøver blot at finde ud af, om tabellen indeholder en beregnet kolonne, kan du gøre noget som dette:

VÆLG navn SOM [Computed Column]FRA sys.computed_columnsWHERE object_id =OBJECT_ID('dbo.Products');

Resultat:

+------------------------+| Beregnet kolonne ||------------------------|| Samlet værdi |+--------------------+

I dette tilfælde vidste jeg, at tabelnavnet var Products , så jeg brugte OBJECT_ID() for at få sit ID og matche det med object_id kolonne (som er ID'et for det objekt, som kolonnen tilhører).

I disse eksempler returnerer jeg kun én kolonne. Som med enhver visning kan du returnere så mange kolonner, som du vil. En af kolonnerne fra denne visning indeholder den beregnede kolonnes definition. Her er en forespørgsel, der returnerer alle kolonner.

VÆLG *FROM sys.computed_columnsWHERE name ='TotalValue';

Resultat (ved hjælp af lodret output):

objekt_id | 814625945navn | TotalValuecolumn_id | 5system_type_id | 60user_type_id | 60max_længde | 8præcision | 19 skala | 4sorteringsnavn | NULLis_nullable | 1is_ansi_polstret | 0is_rowguidcol | 0is_identitet | 0is_filestream | 0er_replikeret | 0is_non_sql_subscribed | 0is_merge_published | 0is_dts_replikeret | 0is_xml_document | 0xml_collection_id | 0default_object_id | 0rule_object_id | 0 definition | ([Mængde]*[Pris])bruger_database_sortering | 1is_vedvarende | 1er_beregnet | 1is_sparsom | 0is_column_set | 0genereret_altid_type | 0generated_always_type_desc | NOT_APPLICABLEencryption_type | NULLencryption_type_desc | NULLencryption_algorithm_name | NULLcolumn_encryption_key_id | NULL-kolonne_krypteringsnøgle_databasenavn | NULLis_hidden | 0is_masked | 0graftype | NULLgraph_type_desc | NULL

Systemkatalogvisningen sys.columns

sys.computed_columns view arver faktisk sin is_computed kolonne (og en masse andre kolonner) fra sys.columns . Derfor kan du også bruge sys.columns for at kontrollere, om en kolonne er en beregnet kolonne.

SELECT is_computedFROM sys.columnsWHERE name ='TotalValue';

Resultat:

+----------------+| is_computed ||--------------|| 1 |+----------------+

  1. Venstre Join returnerer ikke alle rækker

  2. Sådan udskrives flere rapporter med stregkoder \ eller flere stregkoder i én rapport

  3. Giv tilladelser til en MySQL-bruger på Linux via kommandolinjen

  4. Sådan kører du flere MySQL-forekomster på samme maskine