SQL Server'da bir VARCHAR sütununun maksimum uzunluğunu alın


90

VARCHARBir SQL Server tablosunun belirli bir sütununda en uzun olanı bulmak istiyorum .

İşte bir örnek:

ID = INT IDENTITY
DESC = VARCHAR(5000)

ID | Desc
---|-----
1  | a
2  | aaa
3  | aa

3 döndürülecek SQL nedir? En uzun değer 3 karakter olduğuna göre?

Yanıtlar:


170

Açıklama sütununda uzunluk ve maksimum için yerleşik işlevleri kullanın:

SELECT MAX(LEN(DESC)) FROM table_name;

Tablonuz çok büyükse performans sorunları olabileceğini unutmayın.


Teşekkürler, beyin osurdum ve sorunun ortasındaki LEN işlevini hatırladım ama yine de burada olmanın iyi olacağını düşündüm. Teşekkürler dostum!
Milo LaMar

17
Sadece bir not, karakter sayısının aksine boyutu bilmek istiyorsanız, kullanın DATALENGTH(çünkü NVARCHARbazı yerlerde veya bir gün kullanabilirsiniz).
Aaron Bertrand

37

için mysql uzunluğu şişirildi

SELECT MAX(LENGTH(Desc)) FROM table_name

1
Postgresql için de aynı 'UZUNLUK' işlevi. ('LEN' değil)
dimuthu

19

Dikkat et!! Boşluklar varsa, T-SQL'de LEN yöntemi tarafından dikkate alınmayacaktır. Bunun seni kandırmasına ve kullanmasına izin verme

select max(datalength(Desc)) from table_name

İyi bir nokta. Aslında varchars 'asd' ve 'asd' SQL Server tarafından aynı şekilde ele alınır (LIKE yan tümcesi hariç). Ayrıntılar için
adrese

9

Oracle için de LEN yerine LENGTH

SELECT MAX(LENGTH(Desc)) FROM table_name

Ayrıca DESC, ayrılmış bir kelimedir. Ayrılmış sözcüklerin çoğu, çoğu durumda sütun adları için işe yarayacak olsa da, bunu yapmak kötü bir uygulamadır ve bazı durumlarda sorunlara neden olabilir. Bir sebep için ayrılmışlardır.

Eğer Desc kelimesi sadece bir örnek olarak kullanılıyorsa, herkesin bunun farkına varmayacağı, ancak birçok kişinin bunun Azalan için ayrılmış bir kelime olduğunu anlayacağı unutulmamalıdır. Şahsen, bunu kullanarak başladım ve sonra sütun adının nereye gittiğini anlamaya çalıştım çünkü sahip olduğum tek şey ayrılmış kelimelerdi. Anlamak uzun sürmedi, ancak gerçek sütun adınızın yerine neyi koyacağınıza karar verirken bunu aklınızda bulundurun.


7

Tablodaki Maksimum Kayıt Sayısını verir

select max(len(Description))from Table_Name

Daha Fazla Sayılı Kayıt Verir

select Description from Table_Name group by Description having max(len(Description)) >27

Umut birine yardım eder.



2

Sql server (SSMS) için

select MAX(LEN(ColumnName)) from table_name

Bu, karakter sayısını döndürür.

 select MAX(DATALENGTH(ColumnName)) from table_name

Bu, kullanılan / gerekli bayt sayısını döndürür.

EĞER biri varchar kullanırsa kullanın DATALENGTH. Daha fazla detay


1
SELECT TOP 1 column_name, LEN(column_name) AS Lenght FROM table_name ORDER BY LEN(column_name) DESC

2
Bu kod parçacığı çözüm olabilir, ancak bir açıklama da dahil olmak üzere yayınınızın kalitesini artırmaya gerçekten yardımcı olur. Gelecekte okuyucular için soruyu yanıtlayacağınızı ve bu kişilerin kod önerinizin nedenlerini bilmeyebileceklerini unutmayın.
HMD

İşaret için +1 Bir sütun adı olarak bir SQL Server anahtar sözcüğü DESC kullandım, bu bir nedenden dolayı LOL
Milo LaMar

Doğru yazım da kritik olabilir, çünkü bazı okumalar cevaptaki 'Uzunluk'
ifadesinin

1

Çoğu zaman, en uzun uzunluğa sahip o sütuna sahip satırı belirlemek istersiniz, özellikle de bir tablodaki bir satırdaki bir sütunun uzunluğunun başka herhangi bir satırdan neden çok daha uzun olduğunu bulmak için sorun gideriyorsanız. Bu sorgu, hangi satır olduğunu belirlemek için size bir tanımlayıcıyı satırda listeleme seçeneği verecektir.

select ID, [description], len([description]) as descriptionlength
FROM [database1].[dbo].[table1]
where len([description]) = 
 (select max(len([description]))
  FROM [database1].[dbo].[table1]

0

IBM Db2 için LEN değil, UZUNLUĞU:

SELECT MAX(LENGTH(Desc)) FROM table_name;
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.