Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Użyj COLUMNPROPERTY(), aby zwrócić informacje o kolumnie lub parametrze w SQL Server

W SQL Server, COLUMNPROPERTY() funkcja zwraca informacje o kolumnie lub parametrze.

Na przykład możesz go użyć do zwrócenia informacji o kolumnie w tabeli, parametrze procedury składowanej itp.

Akceptuje trzy argumenty:identyfikator tabeli lub procedury, odpowiednia kolumna lub parametr oraz właściwość, o której chcesz uzyskać informacje.

Składnia

Składnia wygląda tak:

COLUMNPROPERTY ( id , column , property )

Przykład 1 – Zapytanie do tabeli

W tym przykładzie otrzymuję informacje o kolumnie w tabeli.

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

Wynik:

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

W takim przypadku kolumna ArtistId nie zezwala na wartości NULL.

Przejdźmy do innej kolumny:

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

Wynik:

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

W takim przypadku kolumna ActiveFrom dopuszcza wartości NULL. Ma również precyzję 10 i skalę 0.

Zauważysz, że używam OBJECT_ID() funkcja zwracająca identyfikator tabeli. Bez tej funkcji musiałbym znać identyfikator (lub musiałbym wykonać inne zapytanie tylko po to, aby uzyskać identyfikator).

Oto, co OBJECT_ID() zwraca w powyższym przykładzie:

SELECT OBJECT_ID('Artists') AS Result;

Wynik:

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

Więc teraz, gdy znamy identyfikator, możemy przekazać go do COLUMNPROPERTY() funkcja zamiast:

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

Wynik:

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

Przykład 2 – Zapytanie o procedurę

W tym przykładzie otrzymuję informacje o parametrze procedury składowanej.

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

Wynik:

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

To jest dokładnie ta sama składnia. W tym przypadku parametr @ArtistId nie jest parametrem wyjściowym.

Pełna lista opcji

Oto pełna lista argumentów, które możesz przekazać do COLUMNPROPERTY() w momencie pisania:

  • Zezwala na wartość Null
  • Identyfikator kolumny
  • FullTextTypeColumn
  • GeneratedAlwaysType
  • IsColumnSet
  • Jest obliczany
  • IsCursorType
  • Jest deterministyczny
  • IsFulltextIndexed
  • Jest ukryty
  • Identity
  • IsIdNotForRepl
  • Jest indeksowalny
  • IsOutParam
  • Jest precyzyjny
  • IsRowGuidCol
  • IsSparse
  • Zweryfikowano system
  • IsXmlIndexable
  • Precyzja
  • Skala
  • Semantyka statystyczna
  • Dostęp do danych systemowych
  • Dostęp do danych użytkownika
  • Używa AnsiTrim

Zapoznaj się z dokumentacją firmy Microsoft, aby uzyskać szczegółowe wyjaśnienie każdej właściwości.

Zobacz także OBJECTPROPERTYEX() dla podobnej funkcji, która zwraca informacje o obiektach o zakresie schematu zamiast baz danych i DATABASEPROPERTYEX() który zwraca informacje o właściwościach dla baz danych.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać ciąg połączenia z bazy danych

  2. Dodaj krok zadania do istniejącego zadania agenta serwera SQL (T-SQL)

  3. Utwórz tabelę partycjonowaną w SQL Server (T-SQL)

  4. 3 sposoby na uzyskanie nazwy miesiąca z daty w SQL Server (T-SQL)

  5. Jak określić niezmienną kulturę podczas korzystania z FORMAT() w SQL Server