SQLServerのVARCHAR列の最大長を取得します


90

VARCHARSQLServerテーブルの特定の列で最長のものを見つけたい。

次に例を示します。

ID = INT IDENTITY
DESC = VARCHAR(5000)

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

3を返すSQLは何ですか?最長値は3文字なので?

回答:


170

説明列の長さと最大値に組み込み関数を使用します。

SELECT MAX(LEN(DESC)) FROM table_name;

テーブルが非常に大きい場合、パフォーマンスの問題が発生する可能性があることに注意してください。


ありがとう、私は脳のおならを持っていて、質問の途中でLEN機能を思い出しましたが、とにかくここにいるのは良いかもしれないと思いました。どうも!
ミロラマー2012年

17
文字数ではなくサイズを知りたい場合は、を使用しDATALENGTHてください(NVARCHAR場所によっては、またはいつか使用する可能性があるため)。
アーロンベルトラン

37

以下のためのMySQLはその長さではないLEN

SELECT MAX(LENGTH(Desc)) FROM table_name

1
postgresqlにも同じ「LENGTH」関数。(ない'LEN')
dimuthu

19

気を付けて!!スペースがある場合、T-SQLのLENメソッドでは考慮されません。これをだまして使用させないでください

select max(datalength(Desc)) from table_name

いい視点ね。実際には、varcharの「asd」と「asd」はSQL Serverによって同じように扱われます(LIKE句を除く)。詳細については、support.microsoft.com
en

9

Oracleの場合、LENではなくLENGTHでもあります

SELECT MAX(LENGTH(Desc)) FROM table_name

また、DESCは予約語です。多くの予約語は多くの状況で列名に対して引き続き機能しますが、そうすることは悪い習慣であり、状況によっては問題を引き起こす可能性があります。それらは理由のために予約されています。

Descという単語が例として使用されているだけの場合、誰もがそれを理解するわけではありませんが、多くの人はそれがDescendingの予約語であることに気付くでしょう。個人的には、これを使って始めて、予約語しかなかったので、列名がどこにあるのかを調べようとしました。それを理解するのにそれほど時間はかかりませんでしたが、実際の列名の代わりに何を使用するかを決定するときは、このことを念頭に置いてください。


7

テーブル内のレコードの最大数を示します

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 2018

+1を指摘するために、列名としてSQL ServerキーワードDESCを使用しました。これにより、何らかの理由でLOLが可能になります
Milo LaMar 2018

正しいつづりも重要です。これを読むと、答えの「長さ」が実際には「長さ」のタイプミスであることに気付かない場合があります(エラーが発生する場合はそうではありません)
Jean-ClaudeDeMars19年

1

多くの場合、その列の長さが最も長い行を特定する必要があります。特に、テーブル内の行の列の長さが他の行よりもはるかに長い理由を調べるためにトラブルシューティングを行う場合は特にそうです。このクエリは、行がどの行であるかを識別するために、行に識別子をリストするオプションを提供します。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.