sql - 在 sql 中使用 nvarchar 列时如何接受订单
问题描述
我有一个这样的查询:
SELECT [Drug_id]
FROM tbl_Receiving
ORDER BY CAST(SUBSTRING([Drug_id], 3, LEN([Drug_ID])) as int)
但结果越来越
A-1
A-10A
A-11
A-2
A-20A
A-21
A-22
A-3
A-30
A-31
但我需要按正确的升序排列。
A-1
A-2
A-3
A-10
A-11
我的 [Drug_id] 列是 nvarchar(50)
解决方案
试试这个:运行这个查询
select substring(drug_id,1,CHARINDEX('-',drug_id)) + convert(varchar,cast(substring(drug_id,CHARINDEX('-',drug_id)+1,len(drug_id)) as int)) id from tbl_Receiving
order by cast(substring(drug_id,CHARINDEX('-',drug_id)+1,len(drug_id)) as int)
推荐阅读
- excel - 如何将数据添加到现有 excel.csv 文件的行中?excel vba
- google-cloud-platform - 如何在 Terraform 中按顺序创建 GCP SQL 数据库?
- c# - 多个数据库上下文未创建完整数据库
- html - 如何删除分区底部的滚动条?
- python - 如何在此 html 中获取价格信息?
- typescript - 打字稿将不需要的字符串类型添加到类型别名属性
- python - 将 pandas 数据帧作为 xlsx 文件写入 azure blob 存储而不创建本地文件
- pandas - 将 netCDF 数据导入 pandas DataFrame
- javascript - 日期选择器的 JavaScript console.log 和计算两个日期之间的差异不起作用
- c++ - 如何将 Glyphs 沿基线与 Freetype 对齐?