Trong SQL Server, bạn có thể sử dụng COL_LENGTH()
hàm lấy độ dài của một cột. Cụ thể hơn, hàm trả về độ dài đã xác định của cột, tính bằng byte.
Hàm chấp nhận hai đối số:tên bảng và tên cột.
Ví dụ 1 - Cách sử dụng cơ bản
Đây là một ví dụ để chứng minh.
USE Music; SELECT COL_LENGTH('dbo.Artists', 'ArtistName') AS Result;
Kết quả:
+----------+ | Result | |----------| | 510 | +----------+
Ví dụ 2 - Cơ sở dữ liệu sai?
Nếu bạn nhận được kết quả NULL, hãy kiểm tra xem bạn có đang truy vấn cơ sở dữ liệu chính xác hay không.
Ví dụ trước sử dụng cơ sở dữ liệu có tên là Music
và cơ sở dữ liệu đó có một bảng và cột của những cái tên đó. Nếu cơ sở dữ liệu không có kết hợp bảng / cột như đã chỉ định, kết quả là NULL
.
Đây là những gì sẽ xảy ra nếu tôi truy vấn sai cơ sở dữ liệu:
USE WideWorldImportersDW; SELECT COL_LENGTH('dbo.Artists', 'ArtistName') AS Result;
Kết quả:
+----------+ | Result | |----------| | NULL | +----------+
Ví dụ 3 - Một số cột khác
Dưới đây là một ví dụ trả về nhiều cột hơn từ cùng một bảng.
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;
Kết quả:
+------------+--------------+--------------+-------------+ | ArtistId | ArtistName | ActiveFrom | CountryId | |------------+--------------+--------------+-------------| | 4 | 510 | 3 | 4 | +------------+--------------+--------------+-------------+
Ví dụ 4 - Truy vấn sys.columns
Trong ví dụ này, tôi so sánh kết quả với max_length
cột của sys.columns
chế độ xem hệ thống.
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');
Kết quả:
+-------------------+---------------+--------------+----------------+ | 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 | +-------------------+---------------+--------------+----------------+
Các cột và độ dài tương ứng của chúng được trả về ở đây là từ nhiều bảng. Trong trường hợp của ArtistId
, có một khóa chính của tên này trong Artists
bảng và khóa ngoại cùng tên trong Albums
bàn. Truy vấn này cũng xảy ra để trả về các cột từ ba chế độ xem, cũng như một hàm có giá trị bảng.