sql-server - 参数数据类型 bigint 对子字符串函数的参数 1 无效
问题描述
我在 SQL Server 中有此代码,但在运行时出现上述错误,该NationalId
列是int
数据类型。
我应该使用什么转换来传递此错误,因为我认为NationalId
需要进行转换
错误:参数数据类型 bigint 对子字符串函数的参数 1 无效
代码:
SELECT
c.NationalId,
CAST (CASE
WHEN LEFT(c.NationalId, 1) = 3
THEN 2000 + SUBSTRING(c.NationalId, 2, 2)
ELSE 1900 + SUBSTRING(c.NationalId, 2, 2)
END + '-' + SUBSTRING(c.NationalId, 4, 2) + '-' + SUBSTRING(c.NationalId, 6, 2) AS Date) AS Birthday,
解决方案
试试这个:
SELECT c.NationalId
, CAST (CASE
WHEN LEFT(cast(c.NationalId as varchar(32)), 1)= 3
THEN '20' + SUBSTRING(cast(c.NationalId as varchar(32)), 2, 2)
ELSE '19' + SUBSTRING(cast(c.NationalId as varchar(32)), 2, 2) END
+ '-' + SUBSTRING(cast(c.NationalId as varchar(32)), 4, 2)
+ '-' + SUBSTRING(cast(c.NationalId as varchar(32)), 6, 2) AS date
) AS Birthday
推荐阅读
- c# - 停用组合框中的 SelectionChanged
- python - 将用户重定向到登录时的单独页面
- azure-devops - 如何在服务器(Windows 操作系统)上重新配置 Azure DevOps 代理?
- python - 如何在 python 上使用 pytesseract 阅读其他语言?
- python-3.x - 为什么我在 python3.7.3 上运行时会收到 opencv2 的 ImportError?
- javascript - 如何解决点 .01 返回 0 的两位小数问题
- datetime - 如何通过 SSIS 连接来自 excel 源的日期和时间字段
- powershell - 在线查找/获取文本文件中 url 的标题并保存到同一个文件
- java - javax.security.sasl.SaslException:GSS 启动失败
- sumo - 测试网格场景时,出现valueError