sql - SQL按带有条件的子字符串排序
问题描述
我的数据如下所示:
[Model Number]
[Model Number]*1
[Model Number]*4
[Model Number]*10
[Model Number]*13
当我选择它们时,我会按“*”后面的数字对它们进行排序,我几乎可以正常工作,但我不知道如何处理没有“*”的情况。这是我查询的最后一部分:
ORDER BY
CAST(SUBSTRING(COL_NAME, CHARINDEX('*', COL_NAME) + 1, LEN(COL_NAME)) AS INT) DESC
谢谢您的帮助
解决方案
你快到了,试试这个
declare @t table (col_name varchar(128));
insert into @t (col_name)
values
( '[Model Number]')
, ('[Model Number]*1')
, ('[Model Number]*4')
, ('[Model Number]*10')
, ('[Model Number]*13');
select *
from @t
order by case charindex('*', col_name) when 0 then 0 else cast(substring(col_name, charindex('*', col_name)+1, 10) as int) end desc
推荐阅读
- python - 在两个不同的自己的库中导入 python 库
- c# - 将字节数组转换为字符串具有特殊字符C#
- python - 如何使用python和opencv在图像中划分接触的cicles
- javascript - WordPress JWT - 错误验证 (401)
- python - 如何获取以某个单词结尾的不同字符串的所有值
- reactjs - 如何在反应中将道具传递给子类
- javascript - ES6“Import()”问题“MODULE_NOT_FOUND”[Webpack - NodeJS]
- r - 向量之间的动态相关性(带采样)
- azure - 无法更新 Azure 应用程序网关 - 错误:禁用的规则“920300”未知
- python - pyspark 1.6中pandas quantile和cut的替代方法是什么