如何在2列中插入2个值,并在不使用Create Table Statement的情况下在rest列中保留空值

时间:2015-01-10 05:23:13

标签: sql sql-server select

请检查示例Sql小提琴http://www.sqlfiddle.com/#!3/f59ae

这样只有我想要output.first 2列应包含可以是任何值的值 和rest列应包含 Hello 值,而不考虑创建表语句

我想编写一个查询,将2个值插入2列,Hello插入所有其他列。

假设我有100列,那么我希望将1020值插入到col1col2以及Hello到所有其他98列中。

同样,如果我有200列,那么我希望1020值插入col1col2以及Hello到其他198列

我写了一个查询,但我认为这是一个基本的查询,所以我不是在这里写的。所以downvoters请考虑一下。

如何编写此查询???

3 个答案:

答案 0 :(得分:1)

您只需将Default constraint添加到您不想插入值explicitly的列即可。我希望@Manish Pant的答案可以帮助你做到这一点。

根据您的评论,您只想使用查询来执行此操作。因此,您需要使用Dynamic sql来执行此操作。

简单演示

<强> 模式

CREATE TABLE [dbo].[Test](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [Country] [varchar](100) NULL,
    [State] [varchar](100) NULL,
    [City] [varchar](100) NULL,
    [Population (in Millions)] [varchar](100) NULL
) 

声明一个变量来保存Dynamic sql

DECLARE @cl_val NVARCHAR(max)='Insert into Test('

sys.columns视图中提取所有列并过滤标识列

SELECT @cl_val += Quotename(NAME) + ','
FROM   sys.columns
WHERE  Object_name(object_id) = 'Test'
       AND is_identity <> 1
ORDER  BY NAME

SELECT @cl_val = LEFT(@cl_val, Len(@cl_val)-1) + ') values (' -- Remove the trailing comma

此处仅将值添加到column case statementelse,您在default value部分中明确传递了值{}添加SELECT @cl_val += CASE WHEN NAME ='City' THEN '''A''' WHEN NAME='country' THEN '''c''' ELSE '''Hello''' END + ',' FROM sys.columns WHERE Object_name(object_id) = 'Test' AND is_identity <> 1 ORDER BY NAME SELECT @cl_val = LEFT(@cl_val, Len(@cl_val)-1) + ')' -- Remove the trailing comma --PRINT @cl_val EXEC Sp_executesql @cl_val select * from test

id  Country State   City    Population (in Millions)
--  ------- -----   ----    ------------------------
1   c       Hello   A       Hello

<强> 结果

{{1}}

答案 1 :(得分:0)

如果所有其他列都设置为Nullable,那么在Insert语句中,您可以编写语句By而不考虑Nullable字段。

假设您的名为Student的表具有以下属性:

Student ::

Name,
RollNo,
OptionalField_1,
OptionalField_2,
OptionalField_3

其中OptionalField的列是Nullble字段。

在这种情况下,您可以将查询编写为::

INSERT INTO Student (Name,RollNo) VALUES ('MyName',12);

因此,这将使ENtry具有两个列值&amp;全部都是Nullable。

为了更好的理解,您可以参考:: http://www.w3schools.com/sql/sql_insert.asp

答案 2 :(得分:0)

您可以将此用于查询:

create table mytable(
                col1 varchar not null, 
                col2 varchar not null,
                col3 varchar not null default 'Hello',
                col4 varchar not null default 'Hello',
                col5 varchar not null default 'Hello',
                so on...... );
insert into mytable(col1,col2) values('10','20');