Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Използвайте COLUMNPROPERTY() за връщане на информация за колона или параметър в SQL Server

В SQL Server, COLUMNPROPERTY() функцията връща информация за колона или параметър.

Например, можете да го използвате, за да върнете информация за колона в таблица, параметър за съхранена процедура и т.н.

Той приема три аргумента:идентификационният номер на таблицата или процедурата, приложимата колона или параметър и свойството, за което искате информация.

Синтаксис

Синтаксисът е така:

COLUMNPROPERTY ( id , column , property )

Пример 1 – Запитване на таблица

В този пример получавам информация за колона в таблица.

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

Резултат:

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

В този случай колоната ArtistId не позволява стойности NULL.

Нека преминем към друга колона:

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

Резултат:

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

В този случай колоната ActiveFrom позволява NULL стойности. Освен това има точност от 10 и скала от 0.

Ще забележите, че използвам OBJECT_ID() функция за връщане на идентификатора на таблицата. Без тази функция ще трябва да знам идентификатора (или ще трябва да направя друга заявка, само за да получа идентификатора).

Ето какво означава OBJECT_ID() връща в горния пример:

SELECT OBJECT_ID('Artists') AS Result;

Резултат:

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

Така че сега, когато знаем идентификатора, можем да го предадем на COLUMNPROPERTY() функция вместо това:

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

Резултат:

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

Пример 2 – Запитване на процедура

В този пример получавам информация за параметър на съхранена процедура.

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

Резултат:

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

Така че това е абсолютно същият синтаксис. В този случай параметърът @ArtistId не е изходен параметър.

Пълен списък с опции

Ето пълен списък с аргументи, които можете да предадете на COLUMNPROPERTY() към момента на писане:

  • AllowsNull
  • ColumnId
  • FullTextTypeColumn
  • GeneratedAlwaysType
  • IsColumnSet
  • Изчислено е
  • IsCursorType
  • Едетерминистично
  • IsFulltextIndexed
  • Скрит е
  • IsIdentity
  • IsIdNotForRepl
  • Индексира се
  • IsOutParam
  • Е точен
  • IsRowGuidCol
  • IsSparse
  • SystemVerified
  • IsXmlIndexable
  • Прецизност
  • Мащаб
  • Статистическа семантика
  • SystemDataAccess
  • UserDataAccess
  • UsesAnsiTrim

Вижте документацията на Microsoft за подробно обяснение на всяко свойство.

Вижте също OBJECTPROPERTYEX() за подобна функция, която връща информация за обекти с обхват на схема, а не за бази данни, и DATABASEPROPERTYEX() който връща информация за свойствата за бази данни.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Получаване и инсталиране на Microsoft SQL Server Management Studio

  2. FILE_ID() срещу FILE_IDEX() в SQL Server:Каква е разликата?

  3. SqlDependency не задейства събитие OnChange, когато наборът от данни е променен

  4. Как TRY_CAST() работи в SQL Server

  5. Анализирайте JSON в TSQL