sql >> Databasteknik >  >> RDS >> Sqlserver

Använd COLUMNPROPERTY() för att returnera kolumn- eller parameterinformation i SQL Server

I SQL Server, COLUMNPROPERTY() funktion returnerar kolumn- eller parameterinformation.

Du kan till exempel använda den för att returnera information om en kolumn i en tabell, en parameter för en lagrad procedur, etc.

Den accepterar tre argument:ID:t för tabellen eller proceduren, den tillämpliga kolumnen eller parametern och egenskapen du vill ha information om.

Syntax

Syntaxen ser ut så här:

COLUMNPROPERTY ( id , column , property )

Exempel 1 – Fråga efter en tabell

I det här exemplet får jag information om en kolumn i en tabell.

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

Resultat:

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

I det här fallet tillåter inte kolumnen ArtistId NULL-värden.

Låt oss byta till en annan kolumn:

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 det här fallet tillåter kolumnen ActiveFrom NULL-värden. Den har också en precision på 10 och en skala på 0.

Du kommer att märka att jag använder OBJECT_ID() funktion för att returnera tabellens ID. Utan den här funktionen skulle jag behöva känna till ID:t (eller så skulle jag behöva göra en annan fråga bara för att få ID).

Här är vad OBJECT_ID() returnerar i exemplet ovan:

SELECT OBJECT_ID('Artists') AS Result;

Resultat:

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

Så nu när vi känner till ID:t kan vi skicka det till COLUMNPROPERTY() funktion istället:

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       |
+--------------+-------------+---------+

Exempel 2 – Fråga efter en procedur

I det här exemplet får jag information om en parameter för en lagrad procedur.

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

Resultat:

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

Så det är exakt samma syntax. I det här fallet, parametern @ArtistId är inte en utdataparameter.

Fullständig lista över alternativ

Här är en fullständig lista över argument som du kan skicka till COLUMNPROPERTY() i skrivande stund:

  • AllowsNull
  • ColumnId
  • FullTextTypeColumn
  • GeneratedAlwaysType
  • IsColumnSet
  • IsComputed
  • IsCursorType
  • Är deterministisk
  • IsFulltextIndexed
  • IsHidded
  • IsIdentity
  • IsIdNotForRepl
  • Är indexerbar
  • IsOutParam
  • Är Precis
  • IsRowGuidCol
  • IsSparse
  • IsSystemVerified
  • IsXmlIndexable
  • Precision
  • Skala
  • StatisticalSemantics
  • SystemDataAccess
  • UserDataAccess
  • Använder AnsiTrim

Se Microsofts dokumentation för en detaljerad förklaring av varje egenskap.

Se även OBJECTPROPERTYEX() för en liknande funktion som returnerar information om schemaomfattade objekt snarare än databaser, och DATABASEPROPERTYEX() som returnerar egenskapsinformation för databaser.


  1. MySQL SIGN() Funktion – Ta reda på om ett tal är positivt eller negativt i MySQL

  2. Värdefel vid import av data till postgres-tabellen med psycopg2

  3. SQL Buddy – ett webbaserat MySQL-administrationsverktyg

  4. FEL:kunde inte ange filen XX.csv:Okänt fel