看板 PHP 關於我們 聯絡資訊
※ 引述《rm031023 (土撥鼠)》之銘言: [前略] : 我的想法是可不可以先忽略>符號,把這些有>符號的做記號, : 然後把型態變成int來比大小, : 在輸出的時候在這些有>符號的值上值上做記號,然後在標註有做記號的是有>符號的。 雖然mysql沒有原生支援regex replace 不過你的問題用一個if()和一個轉型就可以處理。 mysql> SELECT * FROM exp0 ORDER BY id; +----+--------+ | id | stmt | +----+--------+ | 1 | 100 | | 3 | 1138 | | 4 | 2520 | | 5 | >8000 | | 6 | >1024 | | 7 | >32767 | | 9 | 10575 | | 10 | 65535 | | 11 | >3072 | +----+--------+ 9 rows in set (0.00 sec) mysql> SELECT -> CAST( -> IF(SUBSTRING(stmt, 1, 1) BETWEEN '0' AND '9', -> stmt, -> SUBSTRING(stmt, 2) -> ) -> AS SIGNED) AS stmtclean -> , stmt -> FROM exp0 -> ORDER BY stmtclean; +-----------+--------+ | stmtclean | stmt | +-----------+--------+ | 100 | 100 | | 1024 | >1024 | | 1138 | 1138 | | 2520 | 2520 | | 3072 | >3072 | | 8000 | >8000 | | 10575 | 10575 | | 32767 | >32767 | | 65535 | 65535 | +-----------+--------+ 9 rows in set (0.00 sec) 這樣你就同時得到不含符號的數字和含符號的原始資料,並且按大小排列。 if和substring的用法可以自己看文件。cast as signed的原因是如果不這樣做 會照字串規則排列大小,8000會跑到最後。 不過你實在應該去db版才對… -- 從前有個馬鈴薯王國 有個高貴偉大的國王 有的人尊敬他 有的人畏懼他 但有個人敢看不起他不只是一條龍 嘿呵 快出動 去征服 去擺平 嘿呵 快出征 去征服那條龍 嘿呵 快出動(宰了它!轟了它!)嘿呵 快出征 去征服那條龍 :■ Potatoes and Dragons (C)Alphanim France 2004-05 :. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.49.163
kusoayan:這招好帥! 01/03 21:09
rm031023:謝謝~可是如果是要用WHERE來做篩選的話,是要怎麼寫呢? 01/03 21:10
rm031023:WHERE stmt <5000 ??? 好像不是這樣,試了一下怪怪的.. 01/03 21:11
rm031023:>1024會被輸出 01/03 21:13
MOONRAKER:阿不是有select出來stmtclean給你 01/04 01:29
MOONRAKER:那就可以用在where條件裡面啦 這點MySQL比MS的方便 01/04 01:30
qwertmn:可以試試看having ... 01/04 07:55
rm031023:謝謝二位,問題解決了,感恩 01/04 09:49
leecoco:推~~ 01/04 20:45