SQL Serverでは、COL_LENGTH()
を使用できます 列の長さを取得する関数。より具体的には、この関数は、定義された列の長さをバイト単位で返します。
この関数は、テーブル名と列名の2つの引数を受け入れます。
例1-基本的な使用法
実例を示します。
USE Music; SELECT COL_LENGTH('dbo.Artists', 'ArtistName') AS Result;
結果:
+----------+ | Result | |----------| | 510 | +----------+
例2–データベースが間違っていますか?
NULLの結果が得られた場合は、正しいデータベースを照会していることを確認してください。
前の例では、Music
というデータベースを使用しています そのデータベースには、それらの名前のテーブルと列があります。データベースに指定されたテーブル/列の組み合わせがない場合、結果はNULL
になります 。
間違ったデータベースをクエリするとどうなりますか:
USE WideWorldImportersDW; SELECT COL_LENGTH('dbo.Artists', 'ArtistName') AS Result;
結果:
+----------+ | Result | |----------| | NULL | +----------+
例3–さらにいくつかの列
同じテーブルからより多くの列を返す例を次に示します。
USE Music; DECLARE @table_name nvarchar(50) = 'dbo.Artists'; SELECT COL_LENGTH(@table_name, 'ArtistId') AS ArtistId, COL_LENGTH(@table_name, 'ArtistName') AS ArtistName, COL_LENGTH(@table_name, 'ActiveFrom') AS ActiveFrom, COL_LENGTH(@table_name, 'CountryId') AS CountryId;
結果:
+------------+--------------+--------------+-------------+ | ArtistId | ArtistName | ActiveFrom | CountryId | |------------+--------------+--------------+-------------| | 4 | 510 | 3 | 4 | +------------+--------------+--------------+-------------+
例4–sys.columnsのクエリ
この例では、結果をmax_length
と比較します。 sys.columns
の列 システムビュー。
SELECT OBJECT_NAME(object_id) AS [Table Name], name AS [Column Name], max_length, COL_LENGTH(OBJECT_NAME(object_id), name) AS [COL_LENGTH()] FROM sys.columns WHERE name IN ('ArtistId', 'ArtistName', 'ActiveFrom', 'CountryId');
結果:
+-------------------+---------------+--------------+----------------+ | Table Name | Column Name | max_length | COL_LENGTH() | |-------------------+---------------+--------------+----------------| | ufn_AlbumsByGenre | ArtistName | 510 | 510 | | Artists | ArtistId | 4 | 4 | | Artists | ArtistName | 510 | 510 | | Artists | ActiveFrom | 3 | 3 | | Artists | CountryId | 4 | 4 | | Albums | ArtistId | 4 | 4 | | Country | CountryId | 4 | 4 | | RockAlbums | ArtistName | 510 | 510 | | JazzAlbums | ArtistName | 510 | 510 | | BluesAlbums | ArtistName | 510 | 510 | +-------------------+---------------+--------------+----------------+
ここで返される列とそれぞれの長さは、複数のテーブルからのものです。 ArtistId
の場合 、Artists
にはこの名前の主キーがあります テーブルとAlbums
内の同じ名前の外部キー テーブル。このクエリは、3つのビューからの列と、テーブル値関数も返します。