バージョン選択

フォーラム

メニュー

オンライン状況

34 人のユーザが現在オンラインです。 (16 人のユーザが フォーラム を参照しています。)
登録ユーザ: 1
ゲスト: 33
YXX もっと...

サイト内検索

質問 > その他 > ハイフン有り文字列の並び替えについて

その他

新規スレッドを追加する

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
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関数の実装方法がわかりません。

実現方法があればご教授頂きたいです。
よろしくお願いいたします。
フラット表示 前のトピック | 次のトピック


題名 投稿者 日時
 » ハイフン有り文字列の並び替えについて katai 2021/9/14 19:30

 



ログイン

右上バナー


EC-CUBEペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は73,725名です
総投稿数は102,960件です

投稿数ランキング

1
seasoft
7333
2
468
3131
3
AMUAMU
2712
4
nanasess
2192
5
umebius
2042
6
yuh
1664
7
red
1456
8
h_tanaka
1169
9
tsuji
942
10
fukap
907
11
shutta
835
12
tao_s
794
13 ramrun 789
14 karin 689
15 sumida 641
16
homan
633
17 DELIGHT 572
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.