为了账号安全,请及时绑定邮箱和手机立即绑定

为什么在编码中数据输入“O-11”小于数据输入“O-6”?

为什么在编码中数据输入“O-11”小于数据输入“O-6”?

PHP
拉莫斯之舞 2022-06-11 10:04:11
我目前正在用 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

dbfiddle 上的演示


查看完整回答
反对 回复 2022-06-11
?
狐的传说

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


查看完整回答
反对 回复 2022-06-11
  • 2 回答
  • 0 关注
  • 135 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信