我正在使用SQL Server 2012.我是T-SQL的新手。
我有一个名为tblEmp
的表,其中某个员工的电话号码为NULL。
我想使用INTO
子句将所有这些数据复制到新表中,但是在新表中它应该用字符串'NA'替换所有NULL phone nos
我认为这可以通过CASE
声明完成。
答案 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