如果未在存储过程中找到数据,则跳过字段

时间:2012-02-15 02:16:12

标签: sql-server-2008 tsql stored-procedures

问题在这里。我正在创建一个存储过程,我想确定其中一个列是否没有数据,然后它将跳过该行。

示例:表名:Employee

Employee No | Employee Name | Card No | Salary 
1           | test 1        | 123     | 
2           | Simon         |         |  2000        
3           |               | 456     |  4000
4           | test3         | 342     |  5000
5           |               | null    |  3000

它只会读取包含employeeno = 4name = test3card no = 3432salary = 5000的完整数据的行。

3 个答案:

答案 0 :(得分:1)

使用IS NOT NULLLEN()

试试这个:

SELECT *
FROM Employee
WHERE (EmployeeNo IS NOT NULL OR LEN(EmployeeNo) > 0) AND
      (EmployeeName IS NOT NULL OR LEN(EmployeeName) > 0) AND
      (CardNo IS NOT NULL OR LEN(CardNo) > 0) AND
      (Salary IS NOT NULL OR LEN(Salary) > 0)

答案 1 :(得分:1)

你可以使用isnull(),如:

SELECT *
  FROM Employee
 WHERE 
   ISNULL(EmployeeNo,'') != ''
   AND ISNULL(EmployeeName,'') != ''
   AND ISNULL(CardNo, '') != ''
   AND ISNULL(Salary, '') != ''

它会检查两个案例的空格和''。

答案 2 :(得分:0)

使用过滤器 如,

SELECT *
  FROM Employee
 WHERE EmployeeNo IS NOT NULL
   AND EmployeeName IS NOT NULL
   AND CardNo IS NOT NULL
   AND Salary IS NOT NULL