sql >> Databáze >  >> RDS >> Sqlserver

Použijte COLUMNPROPERTY() k vrácení informací o sloupcích nebo parametrech na serveru SQL Server

V SQL Server, COLUMNPROPERTY() funkce vrací informace o sloupci nebo parametru.

Můžete jej použít například k vrácení informací o sloupci v tabulce, parametru pro uloženou proceduru atd

Přijímá tři argumenty:ID tabulky nebo procedury, příslušný sloupec nebo parametr a vlastnost, o které chcete informace.

Syntaxe

Syntaxe vypadá takto:

COLUMNPROPERTY ( id , column , property )

Příklad 1 – Dotaz na tabulku

V tomto příkladu získám informace o sloupci v tabulce.

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

Výsledek:

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

V tomto případě sloupec ArtistId neumožňuje hodnoty NULL.

Pojďme se přepnout na jiný sloupec:

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

Výsledek:

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

V tomto případě sloupec ActiveFrom povoluje hodnoty NULL. Má také přesnost 10 a stupnici 0.

Všimnete si, že používám OBJECT_ID() funkce pro vrácení ID tabulky. Bez této funkce bych potřeboval znát ID (nebo bych musel udělat další dotaz, abych ID získal).

Zde je OBJECT_ID() vrací ve výše uvedeném příkladu:

SELECT OBJECT_ID('Artists') AS Result;

Výsledek:

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

Takže teď, když známe ID, můžeme ho předat do COLUMNPROPERTY() funkce místo toho:

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

Výsledek:

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

Příklad 2 – Dotaz na proceduru

V tomto příkladu získám informace o parametru uložené procedury.

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

Výsledek:

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

Takže je to úplně stejná syntaxe. V tomto případě parametr @ArtistId není výstupní parametr.

Úplný seznam možností

Zde je úplný seznam argumentů, které můžete předat COLUMNPROPERTY() v době psaní:

  • AlowsNull
  • ColumnId
  • FullTextTypeColumn
  • GeneratedAlwaysType
  • IsColumnSet
  • IsComputed
  • IsCursorType
  • IsDeterministic
  • IsFulltextIndexed
  • IsHidden
  • Identity
  • IdNotForRepl
  • Je indexovatelné
  • IsOutParam
  • Je Přesné
  • IsRowGuidCol
  • JeSparse
  • IsSystemVerified
  • IsXmlIndexable
  • Přesnost
  • Měřítko
  • Statistická sémantika
  • SystemDataAccess
  • UserDataAccess
  • PoužíváAnsiTrim

Podrobné vysvětlení každé vlastnosti naleznete v dokumentaci společnosti Microsoft.

Viz také OBJECTPROPERTYEX() pro podobnou funkci, která vrací informace o objektech s rozsahem schématu namísto databází, a DATABASEPROPERTYEX() který vrací informace o vlastnostech pro databáze.


  1. CHYBA 1045 (28000):Přístup odepřen uživateli 'root'@'localhost' (s použitím hesla:ANO)

  2. MySQL – spojení mezi databázemi na různých serverech pomocí Pythonu?

  3. Seskupit podle měsíce a roku v MySQL

  4. Vyplnění pole Many2many (odoo 8)