我目前正在用 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 关注
- 135 浏览
添加回答
举报
0/150
提交
取消