• ベストアンサー

文字列の連結が上手くいきません

カラム1が20バイト以上の場合は...を連結したいのですが下記のSQL文では ...が連結されません。 IF (LENGTH(カラム1)>20, CONCAT(LEFT(カラム1, 20),'...'), LEFT(カラム1, 20)) as comment 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>連結されません。 見た感じとくに問題なさそうので勘違いだと思いますが、 連結されないというのは LEFT(カラム1, 20) のデータのみが表示されるということでしょうか? まずは英数字のみでやってみて、あとで日本語までチェックしてみては? ちなみにLENGTHはバイト単位ですが、LEFTは文字単位です また、IFの最終引数はLEFTはいらないのでは? 以下、変数を使った例 SET @HOGE:="123"; SELECT IF (LENGTH(@HOGE)>5, CONCAT(LEFT(@HOGE, 5),'...'), @HOGE) as comment 出力:123 SET @HOGE:="123456"; SELECT IF (LENGTH(@HOGE)>5, CONCAT(LEFT(@HOGE, 5),'...'), @HOGE) as comment 出力:12356... SET @HOGE:="あいうえおか"; SELECT IF (LENGTH(@HOGE)>5, CONCAT(LEFT(@HOGE, 5),'...'), @HOGE) as comment 出力:あいうえお...

noname#115727
質問者

お礼

MYSQL command lineクライアントで試したら上手くいきました。 どうもCSEだと正常に表示されないようです。 >ちなみにLENGTHはバイト単位ですが、LEFTは文字単位です >また、IFの最終引数はLEFTはいらないのでは? たしかにいらないですね。。。日本語も混じるので気をつけます。 回答ありがとうございました。

関連するQ&A