質問 > その他 > ハイフン有り文字列の並び替えについて |
その他
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
katai |
投稿日時: 2021/9/14 19:30
対応状況: −−−
|
半人前 登録日: 2020/6/29 居住地: 投稿: 18 |
ハイフン有り文字列の並び替えについて [EC-CUBE] 4.0.3
[レンタルサーバ] Xサーバー [PHP] 7.3.25 [データベース] MySQL 5.7.29 ▼実現したいこと 管理画面>受注一覧画面にて、お問い合わせ番号(tracking_number)を1-1、1-2、1-3・・・と設定しています。 通常の並び替えをすると1-1、1-10、1-11、1-2、1-3・・・となりハイフン以降を数値として並び替えをしたいです。 ▼試したこと MySQLにて ◇パターン1 SELECT * FROM `dtb_shipping` WHERE `tracking_number` LIKE "1-%" ORDER BY RIGHT(CONCAT('000',SUBSTRING(s.tracking_number, 3)),4) ◇パターン2 SELECT RIGHT(CONCAT('000',SUBSTRING(tracking_number, 3)), 4) as tn FROM `dtb_shipping` WHERE `tracking_number` LIKE "1-%" ORDER BY tn ASC ◇パターン3 SELECT CAST(SUBSTRING(tracking_number, 3) AS SIGNED) as tn FROM `dtb_shipping` WHERE `tracking_number` LIKE "1-%" ORDER BY tn ASC を実行すると正常に並び替えが出来ます。 OrderRepository.phpにてお問い合わせ番号での検索した場合のみ適用したく記述を行っているのですが、 if (!empty($searchData['tracking_number'])) { ★ $qb-> }else{ $qb->addOrderBy('o.id', 'DESC'); } 上記の★部分の記述はどのようにすればいいでしょうか? $qb->addSelect('SUBSTRING(s.tracking_number, 3) as HIDDEN tracking_number'); $qb->addOrderBy('tracking_number'); ですとエラーは出ませんが、RIGHT関数が入っていないため正常動作になりません。 CONCAT関数はaddselect内に記載可能とは確認出来ましたが、RIGHT関数、CAST関数の実装方法がわかりません。 実現方法があればご教授頂きたいです。 よろしくお願いいたします。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |