Ambil panjang maksimum kolom VARCHAR di SQL Server

90

Saya ingin mencari yang terpanjang VARCHARdi kolom tertentu dari tabel SQL Server.

Berikut contohnya:

ID = INT IDENTITY
DESC = VARCHAR(5000)

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

Apa SQL untuk mengembalikan 3? Karena nilai terpanjang adalah 3 karakter?

Milo LaMar
sumber

Jawaban:

170

Gunakan fungsi built-in untuk panjang dan maksimal pada kolom deskripsi:

SELECT MAX(LEN(DESC)) FROM table_name;

Perhatikan bahwa jika tabel Anda sangat besar, mungkin ada masalah kinerja.

aweis
sumber
Terima kasih, saya punya otak kentut dan ingat pertanyaan pertengahan fungsi LEN tetapi berpikir mungkin lebih baik untuk memilikinya di sini. Terima kasih sobat!
Milo LaMar
17
Sekadar catatan, jika Anda ingin mengetahui ukuran dan bukan jumlah karakter, gunakan DATALENGTH(karena Anda mungkin menggunakannya NVARCHARdi beberapa tempat, atau suatu hari nanti).
Aaron Bertrand
37

untuk mysql panjangnya bukan len

SELECT MAX(LENGTH(Desc)) FROM table_name
Abhishek Goel
sumber
1
Fungsi 'LENGTH' yang sama untuk postgresql juga. (bukan 'LEN')
dimuthu
19

Awas!! Jika ada spasi, spasi tidak akan dipertimbangkan oleh metode LEN di T-SQL. Jangan biarkan ini menipu Anda dan gunakan

select max(datalength(Desc)) from table_name
bevada
sumber
Poin yang bagus. Sebenarnya varchars 'asd' dan 'asd' diperlakukan sama oleh SQL Server (kecuali di klausa LIKE). Untuk detailnya, periksa: support.microsoft.com/en-us/help/316626/…
sotn
9

Untuk Oracle, ini juga LENGTH, bukan LEN

SELECT MAX(LENGTH(Desc)) FROM table_name

Juga, DESC adalah kata yang sudah dipesan. Meskipun banyak kata yang dicadangkan masih akan berfungsi untuk nama kolom dalam banyak situasi, namun praktiknya buruk untuk melakukannya, dan dapat menyebabkan masalah dalam beberapa keadaan. Mereka dicadangkan karena suatu alasan.

Jika kata Desc hanya digunakan sebagai contoh, perlu dicatat bahwa tidak semua orang akan menyadarinya, tetapi banyak yang akan menyadari bahwa itu adalah kata khusus untuk Descending. Secara pribadi, saya mulai dengan menggunakan ini, dan kemudian mencoba mencari tahu ke mana perginya nama kolom karena yang saya miliki hanyalah kata-kata yang dipesan. Tidak butuh waktu lama untuk mengetahuinya, tetapi ingatlah hal itu ketika memutuskan apa yang akan menggantikan nama kolom Anda yang sebenarnya.

codeguruinboise
sumber
7

Memberikan catatan Hitungan Maks dalam tabel

select max(len(Description))from Table_Name

Memberikan Rekor Memiliki Hitungan Lebih Besar

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

Harapan membantu seseorang.

Shaiju T
sumber
3
SELECT MAX(LEN(Desc)) as MaxLen FROM table
Milo LaMar
sumber
2

Untuk sql server (SSMS)

select MAX(LEN(ColumnName)) from table_name

Ini akan mengembalikan jumlah karakter.

 select MAX(DATALENGTH(ColumnName)) from table_name

Ini akan mengembalikan jumlah byte yang digunakan / diperlukan.

JIKA seseorang menggunakan varchar lalu gunakan DATALENGTH. Keterangan lebih lanjut

MSTdev
sumber
1
SELECT TOP 1 column_name, LEN(column_name) AS Lenght FROM table_name ORDER BY LEN(column_name) DESC
Alexandru-Codrin Panaite
sumber
2
Meskipun potongan kode ini dapat menjadi solusinya, menyertakan penjelasan sangat membantu untuk meningkatkan kualitas posting Anda. Ingatlah bahwa Anda menjawab pertanyaan untuk pembaca di masa mendatang, dan orang-orang itu mungkin tidak tahu alasan saran kode Anda.
HMD
+1 untuk menunjukkan saya menggunakan kata kunci SQL Server DESC sebagai nama kolom, yang memungkinkan karena alasan tertentu LOL
Milo LaMar
Ejaan yang benar juga bisa menjadi penting karena beberapa pembacaan ini mungkin tidak menyadari 'Panjang' dalam jawaban sebenarnya adalah kesalahan ketik untuk 'panjang' (bukan berarti jika menyebabkan kesalahan)
Jean-Claude DeMars
1

Sering kali Anda ingin mengidentifikasi baris yang memiliki kolom tersebut dengan panjang terpanjang, terutama jika Anda sedang memecahkan masalah untuk mencari tahu mengapa panjang kolom pada satu baris dalam tabel jauh lebih panjang daripada baris lainnya, misalnya. Kueri ini akan memberi Anda opsi untuk mencantumkan pengenal pada baris untuk mengidentifikasi baris itu.

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

Untuk IBM Db2 PANJANG nya, bukan LEN:

SELECT MAX(LENGTH(Desc)) FROM table_name;
Shashank
sumber