- ベストアンサー
文字列の連結が上手くいきません
カラム1が20バイト以上の場合は...を連結したいのですが下記のSQL文では ...が連結されません。 IF (LENGTH(カラム1)>20, CONCAT(LEFT(カラム1, 20),'...'), LEFT(カラム1, 20)) as comment 宜しくお願いします。
- みんなの回答 (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 出力:あいうえお...
お礼
MYSQL command lineクライアントで試したら上手くいきました。 どうもCSEだと正常に表示されないようです。 >ちなみにLENGTHはバイト単位ですが、LEFTは文字単位です >また、IFの最終引数はLEFTはいらないのでは? たしかにいらないですね。。。日本語も混じるので気をつけます。 回答ありがとうございました。