SQL Server에서 VARCHAR 열의 최대 길이 검색


87

VARCHARSQL Server 테이블의 특정 열에서 가장 긴 항목을 찾고 싶습니다 .

예를 들면 다음과 같습니다.

ID = INT IDENTITY
DESC = VARCHAR(5000)

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

3을 반환하는 SQL은 무엇입니까? 가장 긴 값은 3 자이므로?

답변:


166

설명 열에서 길이 및 최대에 대한 내장 함수를 사용하십시오.

SELECT MAX(LEN(DESC)) FROM table_name;

테이블이 매우 크면 성능 문제가있을 수 있습니다.


고마워요, 방귀가 있었고 질문 중간에 LEN 기능을 기억했지만 어쨌든 여기에 있으면 좋을 것이라고 생각했습니다. 고마워 친구!
Milo LaMar 2012 년

17
참고로 문자 수가 아닌 크기를 알고 싶다면 DATALENGTH( NVARCHAR일부 장소 또는 언젠가 사용할 수 있으므로)를 사용하십시오 .
Aaron Bertrand 2012 년

37

에 대한 MySQL의 길이는 렌하지

SELECT MAX(LENGTH(Desc)) FROM table_name

1
postgresql에도 동일한 'LENGTH'함수가 있습니다. ( 'LEN'이 아님)
dimuthu

19

조심해!! 공백이있는 경우 T-SQL의 LEN 메서드에서 고려되지 않습니다. 이 속임수를 사용하지 마십시오.

select max(datalength(Desc)) from table_name

좋은 지적. 실제로 varchars 'asd'및 'asd'는 SQL Server에서 동일하게 처리됩니다 (LIKE 절 제외). 자세한 내용은 다음을 확인하십시오. support.microsoft.com/en-us/help/316626/…
sotn

9

Oracle의 경우 LEN 대신 LENGTH입니다.

SELECT MAX(LENGTH(Desc)) FROM table_name

또한 DESC는 예약어입니다. 많은 예약어가 많은 상황에서 열 이름에 대해 여전히 작동하지만 그렇게하는 것은 좋지 않으며 일부 상황에서 문제를 일으킬 수 있습니다. 이유 때문에 예약되어 있습니다.

Desc라는 단어가 단지 예로 사용 되었다면 모든 사람이 그것을 깨닫지는 않을 것이지만 많은 사람들은 그것이 Descending에 대한 예약어라는 것을 깨닫게 될 것입니다. 개인적으로 저는 이것을 사용하여 시작한 다음 내가 가진 모든 것이 예약어 였기 때문에 열 이름이 어디로 갔는지 알아 내려고했습니다. 알아내는 데 오래 걸리지 않았지만 실제 열 이름을 대체 할 항목을 결정할 때이를 염두에 두십시오.


6

테이블의 최대 레코드 수를 제공합니다.

select max(len(Description))from Table_Name

더 많은 수의 기록 제공

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

희망은 누군가를 돕습니다.



2

SQL Server (SSMS)의 경우

select MAX(LEN(ColumnName)) from table_name

이것은 문자 수를 반환합니다.

 select MAX(DATALENGTH(ColumnName)) from table_name

이것은 사용 / 필수 바이트 수를 반환합니다.

어떤 사람이 varchar를 사용하면 DATALENGTH. 자세한 내용은


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

2
이 코드 스 니펫이 해결책이 될 수 있지만 설명을 포함하면 게시물의 품질을 향상시키는 데 도움이됩니다. 미래에 독자를 위해 질문에 답하고 있으며 해당 사용자는 코드 제안 이유를 모를 수 있습니다.
HMD

내가 SQL Server 키워드 DESC를 열 이름으로 사용했음을 지적하기 위해 +1, 어떤 이유로 LOL
Milo LaMar

올바른 철자는 또한 일부 읽기가 이것이 답의 '길이'가 실제로 '길이'에 대한 오타임을 깨닫지 못할 수 있기 때문에 중요 할 수 있습니다 (오류가 발생하는 경우가 아님)
Jean-Claude DeMars

1

예를 들어 테이블의 행에있는 열의 길이가 다른 어떤 행보다 긴 이유를 알아 내기 위해 문제를 해결하는 경우 가장 긴 길이를 가진 해당 열이있는 행을 여러 번 식별하려고합니다. 이 쿼리는 행을 식별하기 위해 행에 식별자를 나열하는 옵션을 제공합니다.

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의 경우 LEN이 아닌 LENGTH :

SELECT MAX(LENGTH(Desc)) FROM table_name;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.