从SQL Server列中搜索空白数值

时间:2017-04-14 13:54:02

标签: sql-server sql-server-2008

我的数据列在数据库表中有空白。 我正在尝试这个:

select top 10   
       CHQNO,
       ACCOUNT,
       SURNAME,
       OTHRNAME,
       CHQAMT,
       BANKNO,
       PYMTNO,
       GLACCTNO 
from   table1 
where  CHQAMT = ''  

注意:CHQAMT列类型为十进制

并收到错误:Error converting data type varchar to numeric.

如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

如果CHQAMT是数字,你应该检查它是否为NULL(空白=''仅用于字符串)

html, body {
  height: 100%;
}

div.card {
  height: 100%;
}

#left-col {
  height: 100%;
}

#right-col {
  display: flex;
  flex-direction: column;
  height: 100%;
}

#right-card-container {
  flex: 1;
}

#right-card-content {
  height: 100%;
  width: 100%;
  background: red;
}

#right-bottom-element {
  background: blue;
  display: inline-block;
  height: 100px; 
  width: 100%;
}

一些简单的测试:

<div class="row equal h-100">
  <div id="left-col" class="col-md-4 pr-md-2">
    <div class="card">
      Left Card
    </div>
  </div>
  <div id="right-col" class="col-md-8 pl-md-2">
    <div id="right-card-container">
      <div class="card">
        <div class="card-header">Right Card</div>
        <div class="card-block p-0">
          <div id="right-card-content"></div>
        </div>
      </div>
    </div>
    <div id="right-bottom-element" class="mt-md-3">
      Right Bottom Element
    </div>
  </div>
</div>

输出:

select top 10 
       CHQNO,
       ACCOUNT,
       SURNAME,
       OTHRNAME,
       CHQAMT,
       BANKNO,
       PYMTNO,
       GLACCTNO 
from   table1 
where CHQAMT IS NULL;
CREATE TABLE TEST1 (NUM INT, STRING VARCHAR(10));
INSERT INTO TEST1 VALUES (NULL, NULL);
INSERT INTO TEST1 VALUES (1, '');
INSERT INTO TEST1 VALUES (0, 'Zero');

 SELECT * FROM TEST1 WHERE NUM IS NULL;

输出:

    NUM STRING
1   NULL    NULL

-----下一个(对于数据类型VARCHAR,在Oracle中会有不同的结果,但这不是你的情况)

SELECT * FROM TEST1 WHERE STRING IS NULL;

输出:

    NUM STRING
1   NULL    NULL

最后:

SELECT * FROM TEST1 WHERE STRING = '';

输出(无):实际上我认为它没有任何意义。

答案 1 :(得分:0)

如果您有数字列,则该值不能为空。您收到错误消息的原因&#34; Error converting data type varchar to numeric.&#34;当你比较&#39;&#39;它试图转换字符串&#39;&#39;一个数字来做比较。

如果您要查找空值,则必须将查询更改为:

select top 10   
       CHQNO,
       ACCOUNT,
       SURNAME,
       OTHRNAME,
       CHQAMT,
       BANKNO,
       PYMTNO,
       GLACCTNO 
from   table1 
where  CHQAMT is null

如果您确实在寻找空白,我怀疑情况不是这样,您需要将查询更改为:

select top 10   
       CHQNO,
       ACCOUNT,
       SURNAME,
       OTHRNAME,
       CHQAMT,
       BANKNO,
       PYMTNO,
       GLACCTNO 
from   table1 
where  convert(varchar,CHQAMT) = ''

答案 2 :(得分:0)

您可以尝试这样检查......

select top 10   
           CHQNO,
           ACCOUNT,
           SURNAME,
           OTHRNAME,
           CHQAMT,
           BANKNO,
           PYMTNO,
           GLACCTNO 
    from   table1 
    where  ( CHQAMT is null OR CONVERT(varchar,CHQAMT) = '' OR CONVERT(int, CHQAMT) = 0 )