【问题标题】:assigning IS NULL to a string before querying DB在查询数据库之前将 IS NULL 分配给字符串
【发布时间】:2016-12-28 14:23:14
【问题描述】:

我有一个包含 15 个左右字段的 Excel 电子表格。我正在做的是,我打开它,获取一行数据,然后检查每一行的值。然后使用一些标准我去查看这个客户端值是否已经在数据库中。举例

有些字段是空的。基本上在检查了一些字段之后,我使用它们来检查数据库中是否已经存在该记录。当某些字段为空时会出现问题,在这种情况下,当我查询 sql server 时,它看起来像......

Select * from TblA where Company='Apple' and CompanyAdd ='Cupertino' and City=''

因为 City = '' - 它在 SQL 中找不到任何内容。唯一有效的是

and City is NULL

我如何能够以编程方式将其分配给像 CITY 这样的变量?

它是一个字符串,SQL中的字段是varchar

编辑:

我希望能够做这样的事情.....(例如)

if city = "" then
   'I need this here to be so that....
   city IS NULL
End if

所以当我查询 db 时,它看起来像...

Select count(*) from TblA where City is Null

这样的事情可能吗?

【问题讨论】:

  • ...AND City IS NULL 如果列允许空字符串AND (City Is NULL Or City ='')
  • @plutonix 查看我的编辑
  • Is Null 是 SQL 而不是 VB,所以 IF 块不起作用。如果您需要,SQL 中的 2 个 WHERE 条件有什么问题?
  • @plutonix - 那是另一种选择。我们还有很多代码在 WHERE 语句中使用了这个字段。我只是没想到这个字段是空的——碰巧在 1700 万条记录中,有 2 个这个字段是空的。现在恐怕我需要检查每个字段(这是从 xcel 电子表格中提取的)
  • 好吧,您可以在开始处理之前运行查询以将 City(或 SSN)更新为 '' WHERE City(或 SSN)Is Null,以便将数据固定为查询所期望的

标签: sql sql-server vb.net


【解决方案1】:

您可以为此使用COALESCE

SELECT * 
FROM TblA 
WHERE COALESCE(Company, '')='Apple' 
  AND COALESCE(CompanyAdd, '') = 'Cupertino' 
  AND COALESCE(City, '') = ''

请记住,此查询的性能很可能不会很出色。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-11
    • 2015-07-31
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    相关资源
    最近更新 更多