如何在select中更改tempdb?
我想要一个单一的问题,可以吗?
SELECT cust_ac_no, ord_no, ref_no, net_svc_id, job_type, ord_status, ord_status_date, ord_crt_date
INTO tempdb..xtiankwiksetreport
ALTER table tempdb..xtiankwiksetreport
ADD serial_no varchar(25) null,
msisdn varchar(25) null,
imsi varchar(25) null,
bts_id varchar(25) null
FROM wo_order
WHERE job_type IN ('EXTR', 'EXTC')
AND svc_type='4G'
AND ref_no=2
AND ord_status IN ('PL', 'JL')发布于 2019-11-25 15:18:55
在您添加sql-server标记之前,我已经开始在Sybase中测试这一点,因此我将提供这两种方法,第一种解释其思想,第二种将证明这在两个DBMS中都是可能的。
请注意,解决方案是有效的,但我不会将其作为长期解决方案。我没有研究这是否会成为一种记录在案的行为,将来可能会失败(或者已经失败了,基于我的数据库版本)。
Sybase
只需在null值上使用convert函数来添加空列。
select 'a' as foo,
convert(varchar(25), null) as serial_no
into #temp然后,为了测试它,我插入了一个long值:
insert into #temp values ('b', 'abcdefghijklmnopqrstuvwxyz')结果是:
select * from #temp
foo,serial_no
'a',
'b','abcdefghijklmnopqrstuvwxy'缺少第26个字符,我们有一个varchar(25)
SQL-服务器
由于截断的值,相同的代码将提供一个错误
select 'a' as foo, convert(varchar(25), null) as serial_no
into temp_foo
insert into temp_foo values ('b', 'abcdefghijklmnopqrstuvwxyz')
insert into temp_foo values ('c', 'abcdefghijklmnopqrstuvwxy')
select * from temp_foo带有b的代码行为long提供了一个值,并提供给我:
Msg 8152, Level 16, State 14, Line 4
String or binary data would be truncated.
The statement has been terminated.但是包含25个字符的c这一行很合适。
foo,serial_no
'a',
'c','abcdefghijklmnopqrstuvwxy'SELECT
cust_ac_no, ord_no, ref_no, net_svc_id, job_type, ord_status, ord_status_date, ord_crt_date,
convert(varchar(25), null) as serial_no,
convert(varchar(25), null) as msisdn,
convert(varchar(25), null) as imsi,
convert(varchar(25), null) as bts_id,
INTO tempdb..xtiankwiksetreport
FROM wo_order
WHERE job_type IN ('EXTR', 'EXTC')
AND svc_type='4G'
AND ref_no=2
AND ord_status IN ('PL', 'JL')发布于 2019-11-25 15:32:30
SELECT cust_ac_no, ord_no, ref_no, net_svc_id, job_type, ord_status, ord_status_date, ord_crt_date,
serial_no=convert(varchar(25), null), msisdn-convert(varchar(25), null), imsi=convert(varchar(25), null), bts_id=convert(varchar(25), null)
INTO tempdb..xtiankwiksetreport
FROM wo_order
WHERE job_type IN ('EXTR', 'EXTC')
AND svc_type='4G'
AND ref_no=2
AND ord_status IN ('JL', 'PL')https://stackoverflow.com/questions/59026677
复制相似问题