sql - 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中的数字但没有用。
解决方案
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.
推荐阅读
- javascript - Gatsby:单击路线内锚元素会导致重新渲染
- javascript - 尝试使用圆形工具提示创建折线图
- python - 如何使用 squish 自动化工具从 Windows 资源管理器弹出窗口上传文件
- python - 如何在python中将相似文件名的文件组合在一起?
- c# - 如何为每个命名空间配置 Microsoft.Extensions.Logging.ILogger 级别?
- php - 为什么我的背景位置有一点空间
- javascript - 如何为 javascript 变量(在页面上)分配由 wordpress 中的 php 函数(在 functions.php 中)返回的值
- python - 从 Python 调用 .lib 文件中的 C++ 函数
- php - 使用 Vscode 在 Docker 主机上进行 PHP 调试
- android - 我如何查看短信发送报告。在后台发送短信时