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

Brug COLUMNPROPERTY() til at returnere kolonne- eller parameteroplysninger i SQL Server

I SQL Server er COLUMNPROPERTY() funktion returnerer kolonne- eller parameteroplysninger.

For eksempel kan du bruge den til at returnere information om en kolonne i en tabel, en parameter for en lagret procedure osv.

Den accepterer tre argumenter:ID'et for tabellen eller proceduren, den relevante kolonne eller parameter og den egenskab, du ønsker information om.

Syntaks

Syntaksen ser sådan ud:

COLUMNPROPERTY ( id , column , property )

Eksempel 1 – Forespørg en tabel

I dette eksempel får jeg information om en kolonne i en tabel.

USE Music;
SELECT 
  COLUMNPROPERTY(OBJECT_ID('Artists'), 'ArtistId', 'AllowsNull') AS [Result];

Resultat:

+----------+
| Result   |
|----------|
| 0        |
+----------+

I dette tilfælde tillader kolonnen ArtistId ikke NULL-værdier.

Lad os skifte til en anden kolonne:

SELECT 
  COLUMNPROPERTY(OBJECT_ID('Artists'), 'ActiveFrom', 'AllowsNull') AS [ActiveFrom],
  COLUMNPROPERTY(OBJECT_ID('Artists'), 'ActiveFrom', 'Precision') AS [Precision],
  COLUMNPROPERTY(OBJECT_ID('Artists'), 'ActiveFrom', 'Scale') AS [Scale];

Resultat:

+--------------+-------------+---------+
| ActiveFrom   | Precision   | Scale   |
|--------------+-------------+---------|
| 1            | 10          | 0       |
+--------------+-------------+---------+

I dette tilfælde tillader kolonnen ActiveFrom NULL-værdier. Den har også en præcision på 10 og en skala på 0.

Du vil bemærke, at jeg bruger OBJECT_ID() funktion for at returnere tabellens ID. Uden denne funktion skulle jeg kende id'et (eller jeg skulle lave en anden forespørgsel bare for at få id'et).

Her er hvad OBJECT_ID() returnerer i ovenstående eksempel:

SELECT OBJECT_ID('Artists') AS Result;

Resultat:

+-----------+
| Result    |
|-----------|
| 885578193 |
+-----------+

Så nu hvor vi kender ID'et, kunne vi videregive det til COLUMNPROPERTY() funktion i stedet:

SELECT 
  COLUMNPROPERTY(885578193, 'ActiveFrom', 'AllowsNull') AS [ActiveFrom],
  COLUMNPROPERTY(885578193, 'ActiveFrom', 'Precision') AS [Precision],
  COLUMNPROPERTY(885578193, 'ActiveFrom', 'Scale') AS [Scale];

Resultat:

+--------------+-------------+---------+
| ActiveFrom   | Precision   | Scale   |
|--------------+-------------+---------|
| 1            | 10          | 0       |
+--------------+-------------+---------+

Eksempel 2 – Forespørg på en procedure

I dette eksempel får jeg information om en parameter i en lagret procedure.

USE Music;
SELECT 
  COLUMNPROPERTY(
      OBJECT_ID('dbo.uspGetAlbumsByArtist'), 
      '@ArtistId', 
      'IsOutParam') AS [Result];

Resultat:

+----------+
| Result   |
|----------|
| 0        |
+----------+

Så det er nøjagtig den samme syntaks. I dette tilfælde parameteren @ArtistId er ikke en outputparameter.

Fuld liste over muligheder

Her er en komplet liste over argumenter, du kan sende til COLUMNPROPERTY() i skrivende stund:

  • TilladerNull
  • ColumnId
  • FullTextTypeColumn
  • GeneratedAlwaysType
  • IsColumnSet
  • IsComputed
  • IsCursorType
  • Er deterministisk
  • IsFulltextIndexed
  • Er Skjult
  • IsIdentity
  • IsIdNotForRepl
  • Kan indekseres
  • IsOutParam
  • Er Præcis
  • IsRowGuidCol
  • IsSparse
  • Er SystemVerified
  • IsXmlIndexable
  • Nøjagtighed
  • Skala
  • Statistisk semantik
  • SystemDataAccess
  • Brugerdataadgang
  • Bruger AnsiTrim

Se Microsoft-dokumentationen for en detaljeret forklaring af hver egenskab.

Se også OBJECTPROPERTYEX() for en lignende funktion, der returnerer information om skema-omfattede objekter i stedet for databaser, og DATABASEPROPERTYEX() der returnerer ejendomsoplysninger til databaser.


  1. MySQL Show Grants for alle brugere

  2. Sådan analyseres tilstanden af ​​databaseindekser

  3. Hvordan slår jeg Oracle-adgangskodeudløb fra?

  4. MySQL diakritisk ufølsom søgning (spanske accenter)