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

SQL ServerのSYSNAMEデータ型とは何ですか?

    sysname は128Unicode文字に制限された組み込みデータ型であり、IIRCは、主にスクリプトの作成時にオブジェクト名を格納するために使用されます。その値をNULLにすることはできません

    基本的には、nvarchar(128) NOT NULLを使用するのと同じです。

    編集

    コメントで@Jimが述べたように、sysnameを使用するビジネスケースは実際にはないと思います。 実を言うと。これは主に、内部のsysを構築するときにMicrosoftによって使用されます。 SQLServer内のテーブルやストアドプロシージャなど。

    たとえば、Exec sp_help 'sys.tables'を実行します。 列nameが表示されます sysnameとして定義されています これは、これの値が実際にはそれ自体がオブジェクト(テーブル)であるためです

    あまり心配しません。

    また、SQL Server 6.5以下をまだ使用している人(まだ使用している人はいますか?)には、組み込みタイプのsysnameが組み込まれていることにも注意してください。 varchar(30)と同等です

    ドキュメント

    sysname ncharのドキュメントで定義されています およびnvarchar 、備考欄:

    sysname nvarchar(128)と機能的に同等のシステム提供のユーザー定義データ型です。 、null許容ではないことを除いて。 sysname データベースオブジェクト名を参照するために使用されます。

    上記のコメントを明確にするために、デフォルト sysname NOT NULLとして定義されています null許容型として定義することは確かに可能です。正確な定義はSQLServerのインスタンス間で異なる可能性があることに注意することも重要です。

    特別なデータ型の使用

    sysname データ型は、オブジェクト名を格納するテーブル列、変数、およびストアドプロシージャパラメータに使用されます。 sysnameの正確な定義 識別子のルールに関連しています。したがって、SQLServerのインスタンス間で変動する可能性があります。 sysname 機能的にはnvarchar(128)と同じです ただし、デフォルトでは、 sysname NULLではありません。 SQL Serverの以前のバージョン、 sysname varchar(30)として定義されています。

    sysnameに関する詳細情報 NULLを許可または禁止する 値はここで見つけることができますhttps://stackoverflow.com/a/52290792/300863

    デフォルトである(NOT NULLである)からといって、それがデフォルトになることを保証するものではありません!



    1. R12.2のEnterpriseManager11g FMW Control

    2. コードでは非常に遅いが、SSMSでは速いクエリ

    3. MySQL DATEDIFF()とTIMEDIFF():違いは何ですか?

    4. SQLサーバーで日付データ型を使用するにはどうすればよいですか?