sql >> データベース >  >> RDS >> Sqlserver

TYPEPROPERTY()を使用して、SQLServerのデータ型に関する情報を返します。

    SQL Serverでは、TYPEPROPERTY()を使用できます。 データ型に関する情報を返す関数。

    データ型の名前と、返されるプロパティを指定すると、指定されたデータ型のそのプロパティに関する情報が返されます。

    TYPEPROPERTY()を使用できます システムデータ型およびユーザー定義データ型の場合。

    構文

    構文は次のようになります:

    TYPEPROPERTY (type , property)
    

    typeの場所 はデータ型であり、 property 情報が必要な特定のプロパティです。

    5つの可能なプロパティがあります: AllowsNull OwnerId 精度スケール 、および UsesAnsiTrim

    これらのプロパティと、これらのプロパティがこの関数でどのように機能するかについての詳細は、Microsoftのドキュメントを参照してください。

    例1-基本的な使用法

    これがどのように機能するかを示す基本的な例です。

    SELECT TYPEPROPERTY('int', 'Precision') AS Result;
    

    結果:

    +----------+
    | Result   |
    |----------|
    | 10       |
    +----------+
    

    この結果は、 int データ型の精度は10です。

    例2–すべてのプロパティ

    datetime2のすべてのプロパティを返す例を次に示します。 データ型。

    SELECT 
      TYPEPROPERTY( 'datetime2', 'AllowsNull') AS [AllowsNull],
      TYPEPROPERTY( 'datetime2', 'OwnerId') AS [OwnerId],
      TYPEPROPERTY( 'datetime2', 'Precision') AS [Precision],
      TYPEPROPERTY( 'datetime2', 'Scale') AS [Scale],
      TYPEPROPERTY( 'datetime2', 'UsesAnsiTrim') AS [UsesAnsiTrim];
    

    結果:

    +--------------+-----------+-------------+---------+----------------+
    | AllowsNull   | OwnerId   | Precision   | Scale   | UsesAnsiTrim   |
    |--------------+-----------+-------------+---------+----------------|
    | 1            | 4         | 27          | 7       | NULL           |
    +--------------+-----------+-------------+---------+----------------+
    

    UsesAnsiTrimの理由 NULLは、そのプロパティがバイナリおよび文字列データ型にのみ適用可能であるためです。

    実例を示すために、文字列データ型を使用することを除いて、ここでも説明します。

    SELECT 
      TYPEPROPERTY( 'varchar', 'AllowsNull') AS [AllowsNull],
      TYPEPROPERTY( 'varchar', 'OwnerId') AS [OwnerId],
      TYPEPROPERTY( 'varchar', 'Precision') AS [Precision],
      TYPEPROPERTY( 'varchar', 'Scale') AS [Scale],
      TYPEPROPERTY( 'varchar', 'UsesAnsiTrim') AS [UsesAnsiTrim];
    

    結果:

    +--------------+-----------+-------------+---------+----------------+
    | AllowsNull   | OwnerId   | Precision   | Scale   | UsesAnsiTrim   |
    |--------------+-----------+-------------+---------+----------------|
    | 1            | 4         | 8000        | NULL    | 1              |
    +--------------+-----------+-------------+---------+----------------+
    

    今回はScale 無効である。これは、このプロパティが数値および特定の日付タイプにのみ適用されるためです。

    例3–スケールまたは精度の指定

    一部のデータ型では、スケールまたは精度を指定できますが、TYPEPROPERTY() それを受け入れません:

    SELECT 
      TYPEPROPERTY( 'datetime2(3)', 'Scale') AS [Datetime2 Scale],
      TYPEPROPERTY( 'datetime2(3)', 'Precision') AS [Datetime2 Precision],
      TYPEPROPERTY( 'varchar(255)', 'Precision') AS [Varchar Precision];
    

    結果:

    +-------------------+-----------------------+---------------------+
    | Datetime2 Scale   | Datetime2 Precision   | Varchar Precision   |
    |-------------------+-----------------------+---------------------|
    | NULL              | NULL                  | NULL                |
    +-------------------+-----------------------+---------------------+
    

    例4–ユーザー定義のデータ型

    TYPEPROPERTY() 関数は、ユーザー定義のデータ型でも機能します。

    これが例です。

    SELECT 
      TYPEPROPERTY( 'clientcode', 'AllowsNull') AS [AllowsNull],
      TYPEPROPERTY( 'clientcode', 'OwnerId') AS [OwnerId],
      TYPEPROPERTY( 'clientcode', 'Precision') AS [Precision],
      TYPEPROPERTY( 'clientcode', 'Scale') AS [Scale],
      TYPEPROPERTY( 'clientcode', 'UsesAnsiTrim') AS [UsesAnsiTrim];
    

    結果:

    +--------------+-----------+-------------+---------+----------------+
    | AllowsNull   | OwnerId   | Precision   | Scale   | UsesAnsiTrim   |
    |--------------+-----------+-------------+---------+----------------|
    | 0            | 1         | 8           | NULL    | 1              |
    +--------------+-----------+-------------+---------+----------------+
    

    例5–データ型スキーマプレフィックスを含める

    データ型の前にスキーマ名を付けることもできます。

    SELECT 
      TYPEPROPERTY( 'sys.int', 'AllowsNull') AS [AllowsNull],
      TYPEPROPERTY( 'sys.int', 'OwnerId') AS [OwnerId],
      TYPEPROPERTY( 'sys.int', 'Precision') AS [Precision],
      TYPEPROPERTY( 'sys.int', 'Scale') AS [Scale],
      TYPEPROPERTY( 'sys.int', 'UsesAnsiTrim') AS [UsesAnsiTrim];
    

    結果:

    +--------------+-----------+-------------+---------+----------------+
    | AllowsNull   | OwnerId   | Precision   | Scale   | UsesAnsiTrim   |
    |--------------+-----------+-------------+---------+----------------|
    | 1            | 4         | 10          | 0       | NULL           |
    +--------------+-----------+-------------+---------+----------------+
    

    例6–データベース内のすべてのデータ型の情報を返す

    これは、現在のデータベース内のすべてのデータ型のプロパティ情報を返す例です。

    これを行うには、sys.typesにクエリを実行します システムビュー。 SCHEMA_NAME()も使用します IDに基づいてスキーマの名前を取得する関数。

    SELECT 
      SCHEMA_NAME(schema_id) AS [Schema],
      name AS [Data Type], 
      TYPEPROPERTY(SCHEMA_NAME(schema_id) + '.' + name, 'AllowsNull') AS [AllowsNull],
      TYPEPROPERTY(SCHEMA_NAME(schema_id) + '.' + name, 'OwnerId') AS [OwnerId],
      TYPEPROPERTY(SCHEMA_NAME(schema_id) + '.' + name, 'Precision') AS [Precision],
      TYPEPROPERTY(SCHEMA_NAME(schema_id) + '.' + name, 'Scale') AS [Scale],
      TYPEPROPERTY(SCHEMA_NAME(schema_id) + '.' + name, 'UsesAnsiTrim') AS [UsesAnsiTrim]
    FROM sys.types
    ORDER BY name;
    

    結果:

    +----------+------------------+--------------+-----------+-------------+---------+----------------+
    | Schema   | Data Type        | AllowsNull   | OwnerId   | Precision   | Scale   | UsesAnsiTrim   |
    |----------+------------------+--------------+-----------+-------------+---------+----------------|
    | sys      | bigint           | 1            | 4         | 19          | 0       | NULL           |
    | sys      | binary           | 1            | 4         | 8000        | NULL    | 1              |
    | sys      | bit              | 1            | 4         | 1           | NULL    | NULL           |
    | sys      | char             | 1            | 4         | 8000        | NULL    | 1              |
    | dbo      | clientcode       | 0            | 1         | 8           | NULL    | 1              |
    | sys      | date             | 1            | 4         | 10          | 0       | NULL           |
    | sys      | datetime         | 1            | 4         | 23          | 3       | NULL           |
    | sys      | datetime2        | 1            | 4         | 27          | 7       | NULL           |
    | sys      | datetimeoffset   | 1            | 4         | 34          | 7       | NULL           |
    | sys      | decimal          | 1            | 4         | 38          | 38      | NULL           |
    | sys      | float            | 1            | 4         | 53          | NULL    | NULL           |
    | sys      | geography        | 1            | 4         | -1          | NULL    | NULL           |
    | sys      | geometry         | 1            | 4         | -1          | NULL    | NULL           |
    | sys      | hierarchyid      | 1            | 4         | 892         | NULL    | NULL           |
    | sys      | image            | 1            | 4         | 2147483647  | NULL    | NULL           |
    | sys      | int              | 1            | 4         | 10          | 0       | NULL           |
    | sys      | money            | 1            | 4         | 19          | 4       | NULL           |
    | sys      | nchar            | 1            | 4         | 4000        | NULL    | NULL           |
    | sys      | ntext            | 1            | 4         | 1073741823  | NULL    | NULL           |
    | sys      | numeric          | 1            | 4         | 38          | 38      | NULL           |
    | sys      | nvarchar         | 1            | 4         | 4000        | NULL    | NULL           |
    | sys      | real             | 1            | 4         | 24          | NULL    | NULL           |
    | sys      | smalldatetime    | 1            | 4         | 16          | 0       | NULL           |
    | sys      | smallint         | 1            | 4         | 5           | 0       | NULL           |
    | sys      | smallmoney       | 1            | 4         | 10          | 4       | NULL           |
    | sys      | sql_variant      | 1            | 4         | 0           | NULL    | 1              |
    | sys      | sysname          | 0            | 4         | 128         | NULL    | NULL           |
    | sys      | text             | 1            | 4         | 2147483647  | NULL    | NULL           |
    | sys      | time             | 1            | 4         | 16          | 7       | NULL           |
    | sys      | timestamp        | 0            | 4         | 8           | NULL    | NULL           |
    | sys      | tinyint          | 1            | 4         | 3           | 0       | NULL           |
    | sys      | uniqueidentifier | 1            | 4         | 16          | NULL    | NULL           |
    | sys      | varbinary        | 1            | 4         | 8000        | NULL    | 1              |
    | sys      | varchar          | 1            | 4         | 8000        | NULL    | 1              |
    | sys      | xml              | 1            | 4         | -1          | NULL    | NULL           |
    +----------+------------------+--------------+-----------+-------------+---------+----------------+
    

    sys.typesにはすでに精度とスケールが含まれていることに注意してください。したがって、これを行うこともできます。

    SELECT 
      SCHEMA_NAME(schema_id) AS [Schema],
      name AS [Data Type], 
      TYPEPROPERTY(SCHEMA_NAME(schema_id) + '.' + name, 'AllowsNull') AS [AllowsNull],
      TYPEPROPERTY(SCHEMA_NAME(schema_id) + '.' + name, 'OwnerId') AS [OwnerId],
      Precision,
      Scale,
      TYPEPROPERTY(SCHEMA_NAME(schema_id) + '.' + name, 'UsesAnsiTrim') AS [UsesAnsiTrim]
    FROM sys.types
    ORDER BY name;
    

    結果:

    +----------+------------------+--------------+-----------+-------------+---------+----------------+
    | Schema   | Data Type        | AllowsNull   | OwnerId   | Precision   | Scale   | UsesAnsiTrim   |
    |----------+------------------+--------------+-----------+-------------+---------+----------------|
    | sys      | bigint           | 1            | 4         | 19          | 0       | NULL           |
    | sys      | binary           | 1            | 4         | 0           | 0       | 1              |
    | sys      | bit              | 1            | 4         | 1           | 0       | NULL           |
    | sys      | char             | 1            | 4         | 0           | 0       | 1              |
    | dbo      | clientcode       | 0            | 1         | 0           | 0       | 1              |
    | sys      | date             | 1            | 4         | 10          | 0       | NULL           |
    | sys      | datetime         | 1            | 4         | 23          | 3       | NULL           |
    | sys      | datetime2        | 1            | 4         | 27          | 7       | NULL           |
    | sys      | datetimeoffset   | 1            | 4         | 34          | 7       | NULL           |
    | sys      | decimal          | 1            | 4         | 38          | 38      | NULL           |
    | sys      | float            | 1            | 4         | 53          | 0       | NULL           |
    | sys      | geography        | 1            | 4         | 0           | 0       | NULL           |
    | sys      | geometry         | 1            | 4         | 0           | 0       | NULL           |
    | sys      | hierarchyid      | 1            | 4         | 0           | 0       | NULL           |
    | sys      | image            | 1            | 4         | 0           | 0       | NULL           |
    | sys      | int              | 1            | 4         | 10          | 0       | NULL           |
    | sys      | money            | 1            | 4         | 19          | 4       | NULL           |
    | sys      | nchar            | 1            | 4         | 0           | 0       | NULL           |
    | sys      | ntext            | 1            | 4         | 0           | 0       | NULL           |
    | sys      | numeric          | 1            | 4         | 38          | 38      | NULL           |
    | sys      | nvarchar         | 1            | 4         | 0           | 0       | NULL           |
    | sys      | real             | 1            | 4         | 24          | 0       | NULL           |
    | sys      | smalldatetime    | 1            | 4         | 16          | 0       | NULL           |
    | sys      | smallint         | 1            | 4         | 5           | 0       | NULL           |
    | sys      | smallmoney       | 1            | 4         | 10          | 4       | NULL           |
    | sys      | sql_variant      | 1            | 4         | 0           | 0       | 1              |
    | sys      | sysname          | 0            | 4         | 0           | 0       | NULL           |
    | sys      | text             | 1            | 4         | 0           | 0       | NULL           |
    | sys      | time             | 1            | 4         | 16          | 7       | NULL           |
    | sys      | timestamp        | 0            | 4         | 0           | 0       | NULL           |
    | sys      | tinyint          | 1            | 4         | 3           | 0       | NULL           |
    | sys      | uniqueidentifier | 1            | 4         | 0           | 0       | NULL           |
    | sys      | varbinary        | 1            | 4         | 0           | 0       | 1              |
    | sys      | varchar          | 1            | 4         | 0           | 0       | 1              |
    | sys      | xml              | 1            | 4         | 0           | 0       | NULL           |
    +----------+------------------+--------------+-----------+-------------+---------+----------------+
    

    1. SQL Server(T-SQL)でのCHAR()関数のしくみ

    2. Oracle SQLクエリ:時間に基づいてグループごとに最新の値を取得します

    3. 複数の列にまたがる重複を見つけるにはどうすればよいですか?

    4. LaravelOrderByリレーションシップカウント