Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Sử dụng COL_LENGTH () để lấy độ dài của cột trong SQL Server

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo một thủ tục được lưu trữ trong SQL Server 2017

  2. Phải khai báo biến vô hướng @Id?

  3. Tại sao ép kiểu / chuyển đổi từ int trả về dấu hoa thị

  4. Làm thế nào để chuyển đổi DateTime sang VarChar

  5. Các khóa chính có bị khóa không?