努力创建插入查询

时间:2013-04-09 09:10:57

标签: sql sql-server-2008 insert

我为Insert表创建organization语句,如下所示:

select'Insert into Organizations(Name,ContactPerson,ContactNumber,Mobilenumber)values('''+Nameofthecompany+''+','+Nameofthepersonresponsibleforrecruitment+','+PhoneNumber+','+MobileNumber+''')' from Organization

当我执行这个语句时,我得到了insert语句。但问题是值为null,它显示所有列null

示例:(在数据库中)

  • 姓名:xxxx
  • ContactPerson:zzzz
  • ContactNumber:444444
  • MobileNumber:null

所以我的插入语句如下:

Null.

我只希望该列提供null。其他细节显示正确。在sql server中有什么办法吗?帮帮我......

3 个答案:

答案 0 :(得分:1)

将任何内容连接到NULL甚至本身的结果始终为NULL。使用ISNULL函数的解决方法:

select'Insert into Organizations(Name,ContactPerson,ContactNumber,Mobilenumber)
values('''+ISNULL(Nameofthecompany, 'NULL')+''+','
          +ISNULL(Nameofthepersonresponsibleforrecruitment, 'NULL')+','
          +ISNULL(PhoneNumber, 'NULL')+','
          +ISNULL(MobileNumber, 'NULL')+''')' 
from Organization

SQLFiddle上的演示

答案 1 :(得分:1)

当然 - 只需使用ISNULL(..)NULL变为例如一个空字符串:

SELECT 
    'INSERT INTO Organizations(Name, ContactPerson, ContactNumber, Mobilenumber) VALUES(''' + 
    ISNULL(Nameofthecompany, '') + '' + ',' + 
    ISNULL(Nameofthepersonresponsibleforrecruitment, '') + ',' + 
    ISNULL(PhoneNumber, '') + ',' + ISNULL(MobileNumber,'') + ''')' 
FROM Organization

答案 2 :(得分:0)

当您将每个参数添加到SQL语句时,您需要检查它们是否为空,如果是,请使用关键字NULL,否则请包含用单引号括起来的文字字符串,但要记住,如果该字符串包含任何单引号,需要用两个单引号替换。

更新每个参数的SQL,如下所示:

CASE WHEN MobileNumber IS NULL THEN 'NULL' ELSE '''' + REPLACE(MobileNumber, '''', '''''') + '''' END