Chcę znaleźć najdłuższy VARCHAR
w określonej kolumnie tabeli programu SQL Server.
Oto przykład:
ID = INT IDENTITY
DESC = VARCHAR(5000)
ID | Desc
---|-----
1 | a
2 | aaa
3 | aa
Jaki SQL ma zwrócić 3? Ponieważ najdłuższa wartość to 3 znaki?
Chcę znaleźć najdłuższy VARCHAR
w określonej kolumnie tabeli programu SQL Server.
Oto przykład:
ID = INT IDENTITY
DESC = VARCHAR(5000)
ID | Desc
---|-----
1 | a
2 | aaa
3 | aa
Jaki SQL ma zwrócić 3? Ponieważ najdłuższa wartość to 3 znaki?
Odpowiedzi:
Użyj wbudowanych funkcji długości i maksimum w kolumnie opisu:
SELECT MAX(LEN(DESC)) FROM table_name;
Pamiętaj, że jeśli Twój stół jest bardzo duży, mogą wystąpić problemy z wydajnością.
DATALENGTH
(ponieważ możesz użyć NVARCHAR
w niektórych miejscach lub kiedyś).
dla mysql jego długość nie len
SELECT MAX(LENGTH(Desc)) FROM table_name
Uważaj!! Jeśli są spacje, nie będą uwzględniane przez metodę LEN w T-SQL. Nie daj się oszukać i użyj
select max(datalength(Desc)) from table_name
W przypadku Oracle jest to również LENGTH zamiast LEN
SELECT MAX(LENGTH(Desc)) FROM table_name
Ponadto DESC jest słowem zastrzeżonym. Chociaż wiele zastrzeżonych słów będzie nadal działać w nazwach kolumn w wielu okolicznościach, jest to zła praktyka i może powodować problemy w niektórych okolicznościach. Są zarezerwowane z jakiegoś powodu.
Jeśli słowo Desc zostało użyte tylko jako przykład, należy zauważyć, że nie wszyscy zdają sobie z tego sprawę, ale wielu zda sobie sprawę, że jest to zarezerwowane słowo dla Malejąco. Osobiście zacząłem od tego, a następnie próbowałem dowiedzieć się, gdzie się podziała nazwa kolumny, ponieważ miałem tylko zarezerwowane słowa. Zrozumienie tego nie zajęło dużo czasu, ale pamiętaj o tym, decydując, co zastąpić rzeczywistą nazwę kolumny.
SELECT MAX(LEN(Desc)) as MaxLen FROM table
W przypadku serwera SQL (SSMS)
select MAX(LEN(ColumnName)) from table_name
Zwróci to liczbę znaków.
select MAX(DATALENGTH(ColumnName)) from table_name
Zwróci liczbę wykorzystanych / wymaganych bajtów.
JEŚLI ktoś użyje varchar, użyj DATALENGTH
. Więcej szczegółów
SELECT TOP 1 column_name, LEN(column_name) AS Lenght FROM table_name ORDER BY LEN(column_name) DESC
Często chcesz zidentyfikować wiersz, który ma tę kolumnę o największej długości, zwłaszcza jeśli rozwiązujesz problemy, aby dowiedzieć się, dlaczego długość kolumny w wierszu w tabeli jest o wiele dłuższa niż na przykład jakikolwiek inny wiersz. To zapytanie umożliwia wyświetlenie identyfikatora w wierszu w celu zidentyfikowania, który to wiersz.
select ID, [description], len([description]) as descriptionlength
FROM [database1].[dbo].[table1]
where len([description]) =
(select max(len([description]))
FROM [database1].[dbo].[table1]