sql-server - 在 T-SQL 中使用它在 UNION 中转换时 CAST 失败
问题描述
我正在尝试使用CAST
以连接唯一标识符 int 数据类型。
当我在单个 select 语句中运行脚本时,它可以工作,但是当我使用 union 与另一个查询一起运行它时,我收到错误消息:
消息 245,级别 16,状态 1,第 31
行将 varchar 值“211870 1:2”转换为数据类型 int 时转换失败。
请参阅以下查询:
SELECT DISTINCT
CASE
WHEN SHIFT_CODE = '1:2 Support'
THEN '3'
ELSE ''
END [Datatype Id],
CAST(SS.Schedule_Subshift_ID AS VARCHAR(20)) + ' 1:2' [Unique Visit ID]
'' [Date],
'' [Start Time],
''+ ',' [End Time],
''+ ',,,' [Unique Client ID],
'' [Client Forename]
FROM
Subshift
UNION
SELECT DISTINCT
CASE
WHEN CAST(CAST(EE.Start_Date_SK AS VARCHAR(255)) AS DATE) >= (GETDATE() - 41)
THEN ' 11 '
ELSE ''
END [DataTypeID],
'' [Unique Visit ID],
'' [Date],
'' [Start Time],
''+ ',' [End Time],
''+ ',,,' [Unique Client ID],
'' [Client Forename]
FROM
Subshift
我在不使用 Union 的情况下运行它时得到的结果
DataTypeID Unique Visit ID Date Start Time End Time
3 272574 1:2 20/01/2020 19:00 22:00,
3 272575 1:2 23/01/2020 19:00 22:00,
3 272575 1:2 23/01/2020 19:00 22:00,`
使用 Union 时得到的结果:
消息 245,级别 16,状态 1,第 31
行将 varchar 值“211870 1:2”转换为数据类型 int 时转换失败。
您能否提供一个 T-SQL 查询建议,该查询最适合用于CAST
和在其中CONVERT
发挥作用UNION
?
联盟的后半部分如下:
解决方案
很可能您正在尝试将数据插入到结构不正确的表中(第二列的类型为 int)。
您还可以尝试再次转换该值:
CAST(CAST(SS.Schedule_Subshift_ID AS VARCHAR(20)) + ' 1:2' AS VARCHAR(24)) [Unique Visit ID]
推荐阅读
- java - Maven:在war/WEB-INF/lib中找不到本地依赖文件
- python - 将文件从数据块复制到 blob 存储会导致文件大小为 0
- python - 在python中显示一组可用wifi(SSID)的代码
- python - 如何将这个正弦波与我当前的数据相匹配?
- forms - 我想用 v-if 做一个动态表格
- angular - Angular 7 调用 Azure Indexer 服务
- javascript - 使用 jscolor 选择器更改 div 径向渐变颜色
- php - 如何修复 wp-config.php 以在 WordPress 中上传图片?
- spring-boot - Minikube springboot 收到请求并没有正确响应
- javascript - 切换选项卡时 Flickity 不会初始化