Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在SQL中转换辅助参数_Sql Server - Fatal编程技术网

Sql server 在SQL中转换辅助参数

Sql server 在SQL中转换辅助参数,sql-server,Sql Server,我有以下示例表脚本: create table #temp ( field_01 int, field_02 varchar(20) ) insert into #temp select isnull(a.id,'UN'), a.textcol from table1 a... 在上表脚本中,要插入字段的值,\u 01应为a.id(它是一个int)或UN字段\u 01是整数,我对转换UN感到困惑 获取转换错误:

我有以下示例表脚本:

create table #temp
(
    field_01 int,
    field_02 varchar(20)
)

insert into #temp
    select
        isnull(a.id,'UN'),
        a.textcol
    from 
        table1 a...
在上表脚本中,要插入
字段的值,\u 01
应为
a.id
(它是一个int)或
UN
<代码>字段\u 01是整数,我对转换
UN
感到困惑

获取转换错误:

将varchar值“UN”转换为数据类型int时,转换失败


如果您只想选择转换整个isnull语句所需的数据,我应该转换整行还是像isnull(a.id,convert(INT,'UN'))这样的部分

select
    convert(varchar,isnull(a.id,'UN')) as id,
    a.textcol
from table1 a...
但是如果你想插入它,你就不能。为了在INT列中插入varchar,必须更改表的DDL。您必须将列从INT更改为VARCHAR,否则这是不可能的

编辑:如前所述,为了澄清问题,我将添加给定示例中的完整查询


您不能将字符串(varchar值)存储在整数列中,如果为null,请将isnull更改为store-1,或者将临时表列数据类型切换为varchar以存储ID,为什么不将其保留为null?
UN
有什么意义?这就是
NULL
的用途。我的要求是它应该为NULL值显示'UN',所以要在表示层中这样做。像那样从数据库中取出它很少是个好主意。你的第二句话是正确的。。。但这使得你的第一个不相关的基础上,他们的结构。我会把你的答案改为简单地说明他们为什么会出错,以及如何修复它(理想情况下使用NULL,而不是更改数据类型)。你的评论是有用的和正确的,但是如果他使用ISNULL函数,显然他的想法是避免NULL值。无论如何,您添加到讨论中的内容是有效的!直到他最后一次发表评论,这一点才显现出来。我仍然会编辑您的问题,以显示不带isnull的插入,然后从带有isnull的临时文件中选择谢谢!这个回答很有帮助!
create table #temp
(
    field_01 varchar(20),
    field_02 varchar(20)
)

insert into #temp
select
    id,
    a.textcol
from table1 a...


select
    isnull(field_01,'UN') as field_01,
    field_02
from #temp