Я хочу знайти найдовший 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(Desc)) as MaxLen FROM table
Для SQL-сервера (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]