ฉันต้องการค้นหาVARCHAR
คอลัมน์ที่ยาวที่สุดในคอลัมน์เฉพาะของตาราง SQL Server
นี่คือตัวอย่าง:
ID = INT IDENTITY
DESC = VARCHAR(5000)
ID | Desc
---|-----
1 | a
2 | aaa
3 | aa
SQL ที่จะส่งคืน 3 คืออะไร? เนื่องจากค่าที่ยาวที่สุดคือ 3 ตัวอักษร?
ฉันต้องการค้นหาVARCHAR
คอลัมน์ที่ยาวที่สุดในคอลัมน์เฉพาะของตาราง SQL Server
นี่คือตัวอย่าง:
ID = INT IDENTITY
DESC = VARCHAR(5000)
ID | Desc
---|-----
1 | a
2 | aaa
3 | aa
SQL ที่จะส่งคืน 3 คืออะไร? เนื่องจากค่าที่ยาวที่สุดคือ 3 ตัวอักษร?
คำตอบ:
ใช้ฟังก์ชันในตัวสำหรับความยาวและสูงสุดในคอลัมน์คำอธิบาย:
SELECT MAX(LEN(DESC)) FROM table_name;
โปรดทราบว่าหากตารางของคุณมีขนาดใหญ่มากอาจมีปัญหาด้านประสิทธิภาพ
DATALENGTH
(เนื่องจากคุณอาจใช้NVARCHAR
ในบางสถานที่หรือสักวันหนึ่ง)
สำหรับmysqlความยาวไม่ได้รับการผ่อนปรน
SELECT MAX(LENGTH(Desc)) FROM table_name
ระวัง!! หากมีช่องว่างพวกเขาจะไม่ได้รับการพิจารณาโดยวิธี LEN ใน T-SQL อย่าปล่อยให้เคล็ดลับนี้คุณและใช้
select max(datalength(Desc)) from table_name
สำหรับ Oracle มันยังเป็น LENGTH แทน LEN
SELECT MAX(LENGTH(Desc)) FROM table_name
นอกจากนี้ DESC ยังเป็นคำสงวน แม้ว่าคำสงวนจำนวนมากจะยังใช้ได้กับชื่อคอลัมน์ในหลาย ๆ สถานการณ์ แต่การทำเช่นนั้นก็ไม่ดีและอาจทำให้เกิดปัญหาได้ในบางสถานการณ์ พวกเขาสงวนไว้ด้วยเหตุผล
หากใช้คำว่า Desc เป็นเพียงตัวอย่างควรสังเกตว่าไม่ใช่ทุกคนที่จะตระหนักถึงสิ่งนั้น แต่หลายคนจะรู้ว่าเป็นคำสงวนสำหรับ Descending โดยส่วนตัวแล้วฉันเริ่มต้นด้วยการใช้สิ่งนี้แล้วพยายามหาว่าชื่อคอลัมน์ไปที่ใดเพราะทั้งหมดที่ฉันมีเป็นคำสงวน ใช้เวลาไม่นานในการคิดออก แต่ควรคำนึงถึงเรื่องนี้เมื่อตัดสินใจว่าจะใช้อะไรแทนชื่อคอลัมน์จริงของคุณ
ให้จำนวนระเบียนสูงสุดในตาราง
select max(len(Description))from Table_Name
ให้บันทึกที่มีจำนวนมากขึ้น
select Description from Table_Name group by Description having max(len(Description)) >27
ความหวังช่วยใครบางคน
SELECT MAX(LEN(Desc)) as MaxLen FROM table
สำหรับ SQL Server (SSMS)
select MAX(LEN(ColumnName)) from table_name
สิ่งนี้จะส่งกลับจำนวนอักขระ
select MAX(DATALENGTH(ColumnName)) from table_name
สิ่งนี้จะส่งคืนจำนวนไบต์ที่ใช้ / จำเป็น
ถ้ามีใครใช้ varchar ก็ใช้DATALENGTH
. รายละเอียดเพิ่มเติม
SELECT TOP 1 column_name, LEN(column_name) AS Lenght FROM table_name ORDER BY LEN(column_name) DESC
หลายครั้งที่คุณต้องการระบุแถวที่มีคอลัมน์นั้นยาวที่สุดโดยเฉพาะอย่างยิ่งหากคุณกำลังแก้ไขปัญหาเพื่อค้นหาว่าเหตุใดความยาวของคอลัมน์บนแถวในตารางจึงยาวกว่าแถวอื่น ๆ มาก แบบสอบถามนี้จะให้คุณมีตัวเลือกในการแสดงตัวระบุบนแถวเพื่อระบุว่าเป็นแถวใด
select ID, [description], len([description]) as descriptionlength
FROM [database1].[dbo].[table1]
where len([description]) =
(select max(len([description]))
FROM [database1].[dbo].[table1]
สำหรับ IBM Db2 LENGTH ไม่ใช่ LEN:
SELECT MAX(LENGTH(Desc)) FROM table_name;