如何检查 SQL Server 文本列是否为空?
我正在使用 SQL Server 2005。我有一个带有文本列的表,表中有很多行,其中该列的值不为空,但它是空的。 尝试与 '' 进行比较会产生以下响应:
数据类型 text 和 varchar 在不等于运算符中不兼容。
有没有一个特殊的函数来确定文本列的值是否不为空而是为空?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(17)
我将针对 SUBSTRING(textColumn, 0, 1) 进行测试
I would test against SUBSTRING(textColumn, 0, 1)
试试这个:
我希望能帮助你!
try this:
i hope help u!
您必须执行以下两项操作:
SELECT * FROM Table WHERE Text IS NULL 或 Text LIKE ''
You have to do both:
SELECT * FROM Table WHERE Text IS NULL or Text LIKE ''
我知道这个问题有很多替代方案的答案,但我只是想将@Eric Z Beard 和 @Eric Z Beard 找到的最佳解决方案放在一起。 @Tim Cooper 与@Enrique Garcia & @乌利·科勒。
如果需要处理这样的事实,即在您的用例场景中,仅空格可能与空相同,因为下面的查询将返回 1,而不是 0。
因此,我会选择类似的内容:
I know there are plenty answers with alternatives to this problem, but I just would like to put together what I found as the best solution by @Eric Z Beard & @Tim Cooper with @Enrique Garcia & @Uli Köhler.
If needed to deal with the fact that space-only could be the same as empty in your use-case scenario, because the query below will return 1, not 0.
Therefore, I would go for something like:
null 和空字符串等价吗? 如果是的话,我会在我的应用程序中包含逻辑(或者如果应用程序是“开箱即用的”,则可能是一个触发器?)以强制该字段为 null 或 '',但不是另一个。 如果您使用 '',那么您也可以将该列设置为 NOT NULL。 只是数据清洁度的问题。
Are null and an empty string equivalent? If they are, I would include logic in my application (or maybe a trigger if the app is "out-of-the-box"?) to force the field to be either null or '', but not the other. If you went with '', then you could set the column to NOT NULL as well. Just a data-cleanliness thing.
如果该值为 null 或为空,我希望显示一个预定义的文本(“没有可用的实验室”),我的朋友帮我解决了这个问题:
I wanted to have a predefined text("No Labs Available") to be displayed if the value was null or empty and my friend helped me with this:
仅获取空值(而非空值):
同时获取空值和空值:
仅获取空值:
获取除空值和空值之外的值:
请记住,仅在必要时才使用 LIKE 短语,因为与其他类型的搜索相比,它们会降低性能。
To get only empty values (and not null values):
To get both null and empty values:
To get only null values:
To get values other than null and empty:
And remember use LIKE phrases only when necessary because they will degrade performance compared to other types of searches.
实际上,您只需使用 LIKE 运算符即可。
Actually, you just have to use the LIKE operator.
使用 DATALENGTH 方法,例如:
Use DATALENGTH method, for example:
不要使用
isnull
,而是使用case
,因为从性能角度来看,case 更好。在您的问题中,您需要执行以下操作:
代码如下:
Instead of using
isnull
use acase
, because of performance it is better the case.In your issue you need to do this:
Code like this:
我知道这篇文章很古老,但是我发现它很有用。
它没有解决我返回带有非空文本字段的记录的问题,所以我想我会添加我的解决方案。
这是对我有用的 where 子句。
I know this post is ancient but, I found it useful.
It didn't resolve my issue of returning the record with a non empty text field so I thought I would add my solution.
This is the where clause that worked for me.
使用 IS NULL 运算符:
Use the IS NULL operator: