如何从SQL查询返回的Version列中提取前两位数字
解决方案
你之前调用LEN、SUBSTRING不生效的核心原因是SERVERPROPERTY函数的返回值类型为sql_variant,无法直接被字符串处理函数识别,必须先显式转换为字符串类型后再操作。
以下是两种适配不同需求的实现方式:
- 如果你要提取的是SQL Server主版本号(例如版本
16.0.4120.1对应的16),推荐使用PARSENAME函数,适配所有标准版本号格式:
SELECT SERVERPROPERTY('ProductLevel') as SP_installed, SERVERPROPERTY('ProductVersion') as Version, PARSENAME(CAST(SERVERPROPERTY('ProductVersion') AS VARCHAR(20)), 4) AS MajorVersion
- 如果你确实需要固定截取版本字符串的前两位字符,使用显式类型转换后的
SUBSTRING即可实现:
SELECT SERVERPROPERTY('ProductLevel') as SP_installed, SERVERPROPERTY('ProductVersion') as Version, SUBSTRING(CAST(SERVERPROPERTY('ProductVersion') AS VARCHAR(20)), 1, 2) AS FirstTwoDigits
内容的提问来源于stack exchange,提问作者kriker
相关产品推荐
相关产品推荐

