与创建插入查询

问题描述:

努力创建Insert语句organization表是这样的:与创建插入查询

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

当我执行该语句,我得到INSERT语句。但问题是其中的值是零,这表明所有列null

例子:(数据库)

  • 名称:XXXX
  • 联系人:联系ZZZZ
  • ContactNumber:444444
  • 移动电话号码:空

所以我的INSERT语句长相像:

Null. 

我只希望该列提供空。其他细节正确显示。有什么办法在sql服务器?帮助我的人......

+0

只需使用参数,所有这些都会消失。 – usr 2013-04-09 09:27:04

串联什么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

+0

注意:这将处理NULL,但不会引用字符串。看到我的答案在下面,两者都有。 – 2013-04-09 11:12:11

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

更新SQL每个参数类似如下:

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

我有近5000多条记录。其他地方的所有字段都有空值。 – PoliDev 2013-04-09 09:20:44

+0

我不太了解你的评论。如果您正确处理SQL语句中的每个参数的NULL值,它将尽可能轻松地处理5000条记录,因为它可以处理1条记录。 – 2013-04-09 11:17:31

+0

我想说的手段,我有这样OrganName,地址,PHONENO领域。我的价值观就像xxx,dkfjds,111111111那样。所以这个记录不包含空值。所以它没有pblm。另一个记录,yyy,Null,444444就是这样。所以我只得到结果“空”。其他两个值没有显示。这是问题,也解决了。 – PoliDev 2013-04-10 04:48:10

当然 - 只是用ISNULL(..)把一个NULL成如一个空字符串:

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