如何使用INTO CLAUSE根据条件将数据插入新表?

时间:2013-09-14 08:16:54

标签: sql tsql sql-server-2012

我正在使用SQL Server 2012.我是T-SQL的新手。

我有一个名为tblEmp的表,其中某个员工的电话号码为NULL。

我想使用INTO子句将所有这些数据复制到新表中,但是在新表中它应该用字符串'NA'替换所有NULL phone nos

我认为这可以通过CASE声明完成。

4 个答案:

答案 0 :(得分:4)

您可以使用ISNULL声明

查询:

INSERT INTO table_name (column1,column2,column3,...)
SELECT isnull(phone_no, 'NA')  AS phone_no,
       name,
       .....
FROM tblEmp

OR SELECT-INTO声明:

SELECT isnull(phone_no, 'NA') AS phone_no,
       name,
       .....
INTO newtable
FROM tblEmp

<强> ExampleSqlFiddle

答案 1 :(得分:3)

INSERT INTO NewTable(col1,col2,....)
SELECT case when phone_no is null then 'NA' else phone_no end,
   name,....
FROM tblEmp

答案 2 :(得分:0)

稍微简单一些(不需要显式地声明所有列名),但分两步:

select * into newTable from tblEmp
update newTable set phoneNo = 'NA' where phoneNo is null

可能不完全是你想要的。

答案 3 :(得分:0)

使用COALESCE(http://sqlzoo.net/wiki/COALESCE)。

  

COALESCE接受任意数量的参数并返回第一个值   那不是空的。   COALESCE(x,y,z)= x,如果x不为NULL   COALESCE(x,y,z)= y,如果x为NULL且y不为NULL   COALESCE(x,y,z)= z,如果x和y为NULL但z不为NULL

INSERT INTO tblEmp2(Column1, Column2, ...)
SELECT (COALESCE(tblEmp.phone, 'NA'), ...)
FROM tblEmp