我目前正在用 PHP 編寫單元管理系統。我有以下代碼:<?php $result = mysqli_query($conn, "SELECT * FROM ranks WHERE grade_level <= "O-6" ORDER BY id ASC"); while($row = mysqli_fetch_array($result)) { echo "<option value='".$row['id']."'>".$row['rank_name']."</option>"; }?>我希望它只顯示低于/包括上校 (O-6) 的軍銜,但它也顯示軍銜將軍 (O-10) 和陸軍將軍 (O-11)。我不知道為什么第二個數字沒有注冊,因此它的價值超過了個位數。對于谷歌的搜索算法,我的問題似乎也太寬泛了。
2 回答

慕虎7371278
TA貢獻1802條經驗 獲得超4個贊
您可以使用 MySQL 的SUBSTRING_INDEX
函數來提取列的數字部分grade_level
(在 的右側-
)并對其進行測試:
SELECT * FROM ranks WHERE SUBSTRING_INDEX(grade_level, '-', -1) <= 6

狐的傳說
TA貢獻1804條經驗 獲得超3個贊
如果要比較字符串右側的整數值,并且字符串始終以 2 字符為前綴O-
假設您使用的是 Sql-Server
SELECT * FROM ranks
WHERE cast(right(grade_level, len(grade_level) -2) AS INT) <=
cast(right("O-6", len("O-6") -2) as INT)
ORDER BY id ASC
- 2 回答
- 0 關注
- 157 瀏覽
添加回答
舉報
0/150
提交
取消