【问题标题】:struggling with creating Insert query努力创建插入查询
【发布时间】:2013-04-09 09:10:57
【问题描述】:

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

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

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

示例:(在数据库中)

  • 姓名:xxxx
  • 联系人:zzzz
  • 联系电话:444444
  • 手机号码:空

所以我的插入语句看起来像:

Null.

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

【问题讨论】:

  • 只需使用参数,所有这些都消失了。

标签: sql sql-server-2008 insert


【解决方案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上的演示

【讨论】:

  • 注意:这会处理 NULL,但不会引用字符串。请参阅下面的答案,两者兼而有之。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

    • 我有将近 5000 多条记录。其他地方的所有字段都有 Null 值。
    • 我不太明白你的评论。如果您正确处理 SQL 语句中每个参数的 NULL,它将像处理 1 条记录一样轻松处理 5000 条记录。
    • 我想说的是,我有器官名称、地址、电话号码等字段。我的价值观就像 xxx,dkfjds,111111111 这样的。所以这条记录不包含 Null 值。所以它没有pblm。另一条记录,yyy,Null,444444 之类的。所以我只得到结果“空”。其他两个值未显示。这是问题,也解决了。
    猜你喜欢
    • 2021-07-21
    • 2021-03-03
    • 2021-12-15
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2011-02-27
    相关资源
    最近更新 更多