1

MySQL データベースから取得する文字を制限したかったのですが、使用する関数が LEFT() であることはわかっています。これは私のクエリです

SELECT id,
  LEFT(heading, 80) AS heading,
  LEFT(article, 20) AS article
FROM news
ORDER BY stamp DESC
LIMIT 5;

しかし、実際に私が望むのは、「見出し」列と「記事」列を組み合わせて取得した文字の総数を制限することです...

他の手段で; 「見出し」を優先して、両方の列の合計を常に 100 文字にしたいのですが、SQL さん、「見出し」を (100 文字の範囲内で) 表示し、必要に応じて「記事」を省略してください。 、必要に応じて「見出し」を省略して 100 文字の状態にします。

つまり、'heading' は 80 文字、'article' は 120 文字であるため、'article' から 100 文字を削除します。

「heading」は 110 文字、「article」は 500 文字であるため、article から 500 文字、「heading」から 10 文字を削除します。

4

3 に答える 3

1
SELECT id,
  LEFT(heading, 100) AS heading,
  IF(LENGTH(heading)>=100, '', LEFT(article, 100-LENGTH(heading))) AS article
FROM news
ORDER BY stamp DESC
LIMIT 5;

明らかに、元のクエリのように 2 つの列に配置することを気にしない場合はCONCAT、他の人が言及したようにアルゴリズムを使用してください。

于 2013-05-08T20:52:55.223 に答える
0

CONCAT()を使用する

SELECT id,
  LEFT(concat(heading,article), 80) AS heading,
FROM news
ORDER BY stamp DESC
LIMIT 5;
于 2013-05-08T20:51:50.230 に答える