バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

その他

新規スレッドを追加する

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

実現方法があればご教授頂きたいです。
よろしくお願いいたします。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,283名です
総投稿数は109,688件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

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

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