MySQL テーブル内の特定の列の長さが最も長いフィールドを見つけるにはどうすればよいですか?
4 に答える
MySQL には、使用できる多くの文字列関数があります。
SELECT LENGTH(col) as my_len FROM my_table ORDER BY my_len DESC LIMIT 1
よりファンキーなバージョン (動作します):
SELECT MAX(LENGTH(col)) FROM my_table
mysql コマンド LENGTH() を使用できます
<?php
$q = mysql_query("SELECT LENGTH(yourfield) AS fieldlength FROM yourtable ORDER BY fieldlength DESC LIMIT 1");
echo $longestfield = mysql_result($q,0);
?>
テーブルの名前を tbl1、列の名前を col1 とし、最長の長さの値を見つけようとしています。
アプローチ 1:
select col1, length(col1) from tbl1 order by length(col1) desc limit 1
これにより、値と値の長さも返されます。
上記のアプローチは、それらが単一の行のみである場合、または最長の長さを持つ 1 つの行のみを取得する場合に最適です。それらが最長の複数の行であり、それらすべてを取得したい場合は、2番目のアプローチが最適です。
アプローチ 2:
tbl1 から col1、長さ (col1) を選択します。ここで、長さ (col1) は (tbl1 から max(length(col1)) を選択します)
これは、値と、最も長い値を持つすべての行の値の長さの両方を返します。
検討したいかもしれませんCHAR_LENGTH()
。ドキュメントとの違い:
CHAR_LENGTH()
: 引数の文字数を返す
LENGTH()
: 文字列の長さをバイト単位で返します
たとえば、UTF-8
列で使用する場合、これらの関数は異なる値を返します。
string
また、列に設定した長さ (例: varchar
) は、実際にはその文字長であることに注意してください。