Tôi muốn tìm cột dài nhất VARCHAR
trong một cột cụ thể của bảng SQL Server.
Đây là một ví dụ:
ID = INT IDENTITY
DESC = VARCHAR(5000)
ID | Desc
---|-----
1 | a
2 | aaa
3 | aa
SQL trả về 3 là gì? Vì giá trị dài nhất là 3 ký tự?
Tôi muốn tìm cột dài nhất VARCHAR
trong một cột cụ thể của bảng SQL Server.
Đây là một ví dụ:
ID = INT IDENTITY
DESC = VARCHAR(5000)
ID | Desc
---|-----
1 | a
2 | aaa
3 | aa
SQL trả về 3 là gì? Vì giá trị dài nhất là 3 ký tự?
Câu trả lời:
Sử dụng các hàm tích hợp cho độ dài và độ dài tối đa trên cột mô tả:
SELECT MAX(LEN(DESC)) FROM table_name;
Lưu ý rằng nếu bảng của bạn rất lớn, có thể có vấn đề về hiệu suất.
DATALENGTH
(vì bạn có thể sử dụng NVARCHAR
ở một số nơi hoặc một ngày nào đó).
cho mysql chiều dài của nó không len
SELECT MAX(LENGTH(Desc)) FROM table_name
Coi chừng!! Nếu có khoảng trắng, chúng sẽ không được phương thức LEN trong T-SQL xem xét. Đừng để điều này lừa bạn và sử dụng
select max(datalength(Desc)) from table_name
Đối với Oracle, nó cũng là LENGTH thay vì LEN
SELECT MAX(LENGTH(Desc)) FROM table_name
Ngoài ra, DESC là một từ dành riêng. Mặc dù nhiều từ dành riêng vẫn sẽ hoạt động cho tên cột trong nhiều trường hợp, nhưng việc làm như vậy là không tốt và có thể gây ra sự cố trong một số trường hợp. Chúng được bảo lưu vì một lý do.
Nếu từ Desc chỉ được sử dụng làm ví dụ, cần lưu ý rằng không phải ai cũng nhận ra điều đó, nhưng nhiều người sẽ nhận ra rằng đó là một từ dành riêng cho Descending. Cá nhân, tôi bắt đầu bằng cách sử dụng điều này, và sau đó cố gắng tìm ra vị trí của tên cột vì tất cả những gì tôi có là những từ dành riêng. Không mất nhiều thời gian để tìm ra, nhưng hãy ghi nhớ điều đó khi quyết định điều gì sẽ thay thế cho tên cột thực của bạn.
SELECT MAX(LEN(Desc)) as MaxLen FROM table
Đối với máy chủ sql (SSMS)
select MAX(LEN(ColumnName)) from table_name
Điều này sẽ trả về số ký tự.
select MAX(DATALENGTH(ColumnName)) from table_name
Điều này sẽ trả về số byte được sử dụng / bắt buộc.
NẾU một số người sử dụng varchar thì hãy sử dụng DATALENGTH
. Thêm chi tiết
SELECT TOP 1 column_name, LEN(column_name) AS Lenght FROM table_name ORDER BY LEN(column_name) DESC
Nhiều khi bạn muốn xác định hàng có cột đó với độ dài dài nhất, đặc biệt nếu bạn đang khắc phục sự cố để tìm ra lý do tại sao độ dài của một cột trên một hàng trong bảng lại dài hơn bất kỳ hàng nào khác. Truy vấn này sẽ cung cấp cho bạn tùy chọn liệt kê một số nhận dạng trên hàng để xác định đó là hàng nào.
select ID, [description], len([description]) as descriptionlength
FROM [database1].[dbo].[table1]
where len([description]) =
(select max(len([description]))
FROM [database1].[dbo].[table1]