sql - 在 nvarchar 中按数字排序
问题描述
我有一个nvarchar
列,我试图在以下查询中排序:
select youngestage
from table1
ORDER BY
CASE WHEN ISNUMERIC(youngestage) = 1 THEN 0 ELSE 1 END
, CASE WHEN ISNUMERIC(youngestage) = 1 THEN CAST(youngestage AS INT) ELSE 0 END
, youngestage
结果
0
1
1.5
10
11
12
14
2
3
将 nvarchar 值“1.5”转换为数据类型 int 时转换失败。
我怎么能这样订购
YoungestAge
0
1
1.5
2
3
10
11
12
14
解决方案
使用try_cast()
. 我会推荐:
ORDER BY TRY_CONVERT(numeric(20, 1), youngestage)
推荐阅读
- postgresql - 如何使用 SSL 证书从 asp.net 核心应用程序连接 GCP 中的 PostgreSQL
- javascript - Intranet 中的服务人员
- c# - 我们可以在 C# 8.0 中使用记录吗?
- python - 来自 DataFrames 列表的 Pandas DataFrame:ValueError:必须通过 2d 输入
- opengl - 缩放 glBitmap 的方法
- zoom-sdk - 未开始会议时使用 Zoom Web SDK 出现一般网络错误。如何在模态中显示真正的错误?
- post - Twilio 无法在处理包含编码的 StatusCallback URL 的 Lucee/cfml SMS POST(通过 CFHTP)时执行 StatusCallback
- ios - CAEmitterCell 根本不显示颜色
- python - Python Web Scraping Code Crash After 10 result - BeautifulSoup
- sql - 在 SQL 上,我想按查询在表中出现的次数过滤查询