首页 > 解决方案 > Varchar 类型为数字。在 SQL (SSMS) 中将年转换为月

问题描述

我正在尝试将 TOJ 和 TAR 列都转换为没有 MOS 和 YRS 字符的数字。例如,18 YRS 0 MOS 需要为 (18 * 12 + 0 = 216 个月)。

表名是ld2

东杰 柏油
8年0MOS 14 年 0MOS
12年0MOS 6年0MOS
5年0MOS 0YRS 4MOS
0YRS 6MOS 26 年 0MOS
1 年 0MOS 1 年 0MOS

更多样本数据(图片)

我试过这个:

select substring(TOJ,PATINDEX('%[0,9]%',TOJ), LEN(TOJ)) 

获得TOJ中的数字但没有用。

标签: sqlsql-servernumericvarchar

解决方案


cast(trim(replace(left(s, 2), 'Y', '')) as int) * 12 +
cast(trim(replace(left(right(s, 5), 2), 'M', '')) as int)

Assumes the format is consistent and that year (and month) can only have two digits.


推荐阅读