私はテーブルのような列が含まれています
Prefix | CR
----------------------------------------
g | ;#WR_1;#WR_2;#WR_3;#WR_4;#
v | ;#WR_3;#WR_4;#
j | WR_2
m | WR_1
d | ;#WR_3;#WR_4;#
f9 | WR_3
私は[〜#〜] cr [〜#〜]列からデータを取得したい、つまり現在のテーブルでは;#WR_1;#WR_2;# WR_3;#WR_4;#。私は使っています
SELECT max(len(CR)) AS Max_Length_String FROM table1
しかし、それは戻ります
Max_Length_String
----------------------------------------
26
しかし、私が必要なのは長さ(26)ではなく、私はこのようにしたかった
Max_Length_String
----------------------------------------
;#WR_1;#WR_2;#WR_3;#WR_4;#
最も簡単な方法は次のとおりです。
select top 1 CR
from table t
order by len(CR) desc
同じ最長の長さが複数ある場合、これは1つの値のみを返すことに注意してください。
あなたはできる:
SELECT CR
FROM table1
WHERE len(CR) = (SELECT max(len(CR)) FROM table1)
これを投稿してから1年以上前に賛成票を受け取ったので、情報を追加したいと思います。
DISTINCT
を追加します(SELECT DISTINCT CR FROM ...
)、すべての値を一度だけ取得するようにします。 wouldはソート操作ですが、すでに見つかったいくつかのレコードに対してのみです。繰り返しますが、大したことはありません。LEN
を適用することは、通常、そのようなクエリを遅くするものではありません。次のように取得できます。
SELECT TOP 1 CR
FROM tbl
ORDER BY len(CR) DESC
確かに、もっとエレガントな方法があります
Oracle 11gの場合:
SELECT COL1
FROM TABLE1
WHERE length(COL1) = (SELECT max(length(COL1)) FROM TABLE1);
これは、「postgresの最長文字列」のGoogle検索での最初の結果であったため、postgresソリューションを探している人のために、ここに答えを掲載します。
SELECT max(char_length(column)) AS Max_Length_String FROM table
postgresドキュメント: http://www.postgresql.org/docs/9.2/static/functions-string.html
SELECT max(len(CR))AS Max_Length_String FROM table1の代わりに
つかいます
Table1からの選択(CR)
WHERE len(CR)=(SELECT max(len(CR))FROM table1)
2つのクエリでこれを実現できます。これはmysqlの場合です
//will select shortest length coulmn and display its length.
// only 1 row will be selected, because we limit it by 1
SELECT column, length(column) FROM table order by length(column) asc limit 1;
//will select shortest length coulmn and display its length.
SELECT CITY, length(city) FROM STATION order by length(city) desc limit 1;
Postgresの場合:
SELECT column
FROM table
WHERE char_length(column) = (SELECT max(char_length(column)) FROM table )
これにより、@ Thorsten Kettnerの回答からpostgres用に変更された文字列自体が得られます
質問に答えて、Prefix
も取得するには、MySQLで次のことができます。
select Prefix, CR, length(CR) from table1 order by length(CR) DESC limit 1;
そしてそれは戻ります
+-------+----------------------------+--------------------+
| Prefix| CR | length(CR) |
+-------+----------------------------+--------------------+
| g | ;#WR_1;#WR_2;#WR_3;#WR_4;# | 26 |
+-------+----------------------------+--------------------+
1 row in set (0.01 sec)