Re: [請益] 比大小的問題

看板PHP作者 (㊣科學秘招!雷電閃光!)時間12年前 (2012/01/03 11:57), 編輯推噓4(405)
留言9則, 5人參與, 最新討論串2/2 (看更多)
※ 引述《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
謝謝~可是如果是要用WHERE來做篩選的話,是要怎麼寫呢?
01/03 21:10, 2F

01/03 21:11, , 3F
WHERE stmt <5000 ??? 好像不是這樣,試了一下怪怪的..
01/03 21:11, 3F

01/03 21:13, , 4F
>1024會被輸出
01/03 21:13, 4F

01/04 01:29, , 5F
阿不是有select出來stmtclean給你
01/04 01:29, 5F

01/04 01:30, , 6F
那就可以用在where條件裡面啦 這點MySQL比MS的方便
01/04 01:30, 6F

01/04 07:55, , 7F
可以試試看having ...
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
文章代碼(AID): #1F0doboi (PHP)
討論串 (同標題文章)
文章代碼(AID): #1F0doboi (PHP)