You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL:条码扫描精准查询商品与自然排序技术问询

问题1:条码扫描精准查询并选中商品
  • 若数据库存在单独的条码字段(存储值为PC10364A),直接用扫描到的条码做精准匹配:
    SELECT * FROM inventory WHERE barcode = 'PC10364A';
    
    查询到结果后,前端自动选中对应选项即可。
  • 若数据库仅存商品编号字段(存储值为C10364A),需先处理扫描值:
    前端或后端移除条码的P前缀得到C10364A,再执行精准查询:
    SELECT * FROM inventory WHERE product_code = 'C10364A';
    
  • 优化点:扫描输入完成后自动触发查询,若返回唯一结果则直接选中;若有多匹配项,优先展示匹配列表供用户确认选择。
问题2:MySQL实现自然排序

针对{ J1, J3, J18, J41, J12, L1, L13, L8 }这类字母+数字格式的值,可通过拆分字母与数字部分分别排序:

方法1:基础字符串拆分(兼容低版本MySQL)

假设字段名为code,表名为target_table,执行查询:

SELECT code
FROM target_table
ORDER BY
  SUBSTRING(code, 1, 1), -- 按首字母排序
  CAST(SUBSTRING(code, 2) AS UNSIGNED); -- 提取字母后的数字转为整数排序

方法2:正则提取(MySQL 8.0+支持)

若使用MySQL 8.0及以上版本,可用正则更灵活提取字符与数字:

SELECT code
FROM target_table
ORDER BY
  REGEXP_SUBSTR(code, '[A-Za-z]+'), -- 提取所有字母前缀
  CAST(REGEXP_SUBSTR(code, '[0-9]+') AS UNSIGNED); -- 提取数字部分转为整数排序

执行后会得到自然排序结果:J1, J3, J12, J18, J41, L1, L8, L13

内容的提问来源于stack exchange,提问作者Michal Čabala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 20:39:58