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

SQL Server查询最长季数剧集时结果异常的问题求助

SQL Server查询Netflix剧集最长季数结果不一致的原因及解决办法

问题还原

你从Kaggle的netflix_data表查询剧集季数:

  • 执行以下语句时,能看到季数范围包含1到17季:
    select distinct duration
    from netflix_data
    where type = 'Tv Show'
    
  • 但执行关联标题的排序查询时,结果里最长只显示到9季,和之前的结果矛盾:
    SELECT distinct duration, title
    from netflix_data
    where type = 'Tv Show' 
    order by duration desc
    

核心原因

问题出在duration字段的数据类型是字符串,而非数值类型。SQL Server对字符串排序是按字符的ASCII码顺序进行的:

  • 字符串"9 Seasons"的首字符是'9',ASCII码为57
  • 字符串"17 Seasons"的首字符是'1',ASCII码为49
  • 因为'1' < '9',所以字符串排序时"9 Seasons"会排在"17 Seasons"之前,导致你在结果顶部只能看到9季的内容,而17季的记录被排在了后面(可能你没翻到)。

验证方法

可以先确认duration字段的类型:

SELECT DATA_TYPE 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'netflix_data' 
AND COLUMN_NAME = 'duration';

解决办法

将duration中的数字部分提取并转换为数值类型,再按数值排序:

SELECT DISTINCT duration, title
FROM netflix_data
WHERE type = 'Tv Show'
ORDER BY CAST(SUBSTRING(duration, 1, CHARINDEX(' ', duration)-1) AS INT) DESC;

该语句通过SUBSTRING提取duration中的数字部分,再用CAST转为整数,最终按数值从大到小排序,就能正确显示17季的剧集在最顶部。

内容的提问来源于stack exchange,提问作者Gabriel B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:09:52