1

我在 SQL 中有一个列是 varchar。我需要它返回任何有价值的东西。

例子...

select * from students where StudentID <> ''

这是正确的做法吗?我试过不是空的,但它也返回任何空的东西。

谢谢

4

6 回答 6

2

我建议使用合并:

select * from students where coalesce(StudentID, '') <> ''

这会将空值转换为空字符串并禁止它们。这也有限制空字符串的额外好处。

一个空值不等于任何东西,甚至不等于另一个空值,所以一个简单的<>行不通。

于 2014-10-27T22:43:58.250 回答
1
select * from students where StudentID <> '' AND StudentID IS NOT NULL 

您可以同时定位空白和空值。

于 2014-10-27T22:44:51.027 回答
0

尝试使用 ISNULL()

select * from student where isnull(studentid,'') <> ''
于 2014-11-17T05:34:52.573 回答
0

您必须单独处理它不为空的情况,因为您无法与空值进行比较。它们既不等于也不不等于任何其他值(包括 null)。NULL表示“未知值”,因此与任何实际的任何比较都是没有意义的

....
WHERE StudentID IS NOT NULL AND  StudentID  <> ''

您可以使用ISNULL(StudentID,'') <> ''(或COALESCE)。但我认为这样更有效率。

于 2014-10-27T22:45:00.810 回答
0

有一些东西叫 NOT NULL

SELECT LastName,FirstName,Address FROM Persons WHERE Address IS NOT NULL

那有帮助吗?

于 2014-10-27T22:42:36.353 回答
0

尝试这个:

从 StudentID 不为空的学生中选择 *

于 2014-10-27T22:43:52.017 回答