原谅我的代码,我还在学习。
我想要做的是获取几个select语句并将它们插入到一个临时表中。对于每个select语句,我想要某种标识来知道数据来自哪个select语句。
我在下面有一个粗略的想法,使用下面的案例陈述。
错误:
Msg 8152,Level 16,State 14,Line 14
字符串或二进制数据将被截断。
代码:
<username>
我感谢任何指导我正确方向的帮助。
由于
答案 0 :(得分:2)
问题在于您的案例表达。使用select into创建表时,会将“Test”列创建为varchar(10)。但是在insert语句中,该值的长度为11个字符。您可以通过对原始案例表达式进行强制转换/转换来避免这种情况,以使列足够宽。
SELECT #Pr.*,
convert(varchar(20), Case
When TranID = TranID then 'BK Problem'
Else 'Error' End) as 'Test'
INTO #PP
FROM #Pr
WHERE TypeID = 't'
答案 1 :(得分:2)
如果您像这样使用SELECT.. INTO..
,则列长度由第一个插入的每列的最大长度决定。
所以..插入&#39; BK问题&#39;首先,创建Test
列,其长度为“BK问题”或“10”
(请执行此操作以查看:PRINT LEN('BK Problem')
)
然后插入CCA问题&#39;进入Test
失败,因为长度为11并且太长了。
我也不了解你的案例陈述的必要性,试试这个:
SELECT #Pr.*, CAST('BK Problem' as VARCHAR(11)) Test
INTO #PP
FROM #Pr
WHERE TypeID = 't'
--CCA Test
INSERT INTO #PP
SELECT #Pr.*, 'CCA Problem'
FROM #Pr
WHERE TypeID = 'r'