Re: [請益] 比大小的問題
※ 引述《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
推
01/03 21:09, , 1F
01/03 21:09, 1F
推
01/03 21:10, , 2F
01/03 21:10, 2F
→
01/03 21:11, , 3F
01/03 21:11, 3F
→
01/03 21:13, , 4F
01/03 21:13, 4F
→
01/04 01:29, , 5F
01/04 01:29, 5F
→
01/04 01:30, , 6F
01/04 01:30, 6F
→
01/04 07:55, , 7F
01/04 07:55, 7F
推
01/04 09:49, , 8F
01/04 09:49, 8F
推
01/04 20:45, , 9F
01/04 20:45, 9F
討論串 (同標題文章)