sql - 转换 varchar 值“|”时转换失败 数据类型 int
问题描述
输入是包含 7 列信息的单行或多行表我想将这 7 列转换为多行表,其中第一列重复,另外两列,第二列带有组件 ID,第三列是组件长度。
这是下面的原始问题。
SELECT
(CASE
WHEN SpecificationID = '889' AND RTTopEntryLength > '0' AND RTSideEntryLength > '0'
THEN CONVERT(varchar, (infill_id + '|' + infill_id + '|' + infill_id))
WHEN SpecificationID = '889' AND RTTopEntryLength = '0' AND RTSideEntryLength > '0'
THEN CONVERT(varchar, (infill_id + '|' + infill_id))
WHEN SpecificationID = '889' AND RTTopEntryLength > '0' AND RTSideEntryLength = '0'
THEN CONVERT(varchar, (infill_id + '|' + infill_id))
ELSE CONVERT(varchar, infill_id)
END) AS 'InfillIDList'
FROM
INFILLTABLE
WHERE
SpecificationID = '889'
我收到此错误:
Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value '|' to data type int.
我在这里想念什么?我将整个字符串转换为 Varchar,为什么尝试再次转换为整数时出错?
解决方案
它试图处理这个:(infill_id+'|'+infill_id),并得到一个错误。您可以通过以下方式实现相同的结果:select 3+'jj'+2
,您将看到消息:将 varchar 值 'jj' 转换为数据类型 int 时转换失败。
改变(infill_id+'|'+infill_id)
为concat(infill_id,'|',infill_id)
(它会在将结果转换为 varchar之前尝试评估为 int )
如果您真的感兴趣,为什么可以在这里阅读:https ://docs.microsoft.com/en-us/sql/t-sql/data-types/data-type-precedence-transact-sql?view=sql-服务器-ver15
推荐阅读
- sql - Missing Comma in SQL Command Oracle VM
- julia - DataFrame.jl 缺少插补(Julia 编程语言)
- c++ - 测试无意中从 gtest 中的不同测试套件合并
- java - Function.apply-Method 在自定义界面中没有被覆盖时会做什么?
- python - 使用 class 和 raise() 时的 Tkinter 帧大小
- python - ValueError:标签不在输入中。对于没有标签的预测示例,请改用基本模型
- node.js - Mongoose 模式类型二进制数据 - 类型转换
- proxy - Envoy 和 GRPC 不工作(上游没有健康)
- c# - Xamarin Forms MessagingCenter 未收到消息
- sql - 用sql中的序列更新分组记录