如何检查SQL Server文本列是否为空?

213

我正在使用 SQL Server 2005。我有一张表,其中有一个文本列,该列有许多行的值不为null,但为空。尝试与''进行比较会得到以下响应:

在不等于运算符中,数据类型text和varchar不兼容。

是否有特殊函数可以确定文本列的值不为null但为空吗?


1
如有可能,我会将数据类型转换为varchar(max),因为文本已被弃用-最好现在开始进行更改,如果您正在操作表格。当然要先与您的数据库管理员核实。但是,在必须转换之前,尽可能多地进行转换,这是我的想法。这将取决于您有多少代码使用了像contains和write text这样的内容,是否需要立即执行此操作,但是我提出此问题,以便您知道这将需要最终更改。 - HLGEM
17个回答

0

试试这个:

select * from mytable where convert(varchar, mycolumn) = ''

希望能帮到你!


0
它将完成两件事情:
  1. Null 检查和字符串 null 检查
  2. 将空值替换为默认值,例如 NA。
SELECT coalesce(NULLIF(column_name,''),'NA') as 'desired_name') from table;

0

我会对SUBSTRING(textColumn, 0, 1)进行测试


0

空值和空字符串是否等效?如果是,我会在我的应用程序中包含逻辑(或者如果应用程序是“开箱即用”的话,可能是触发器?)来强制字段为空或'',但不是另一个。如果您选择了'',那么您还可以将该列设置为NOT NULL。仅仅是数据清洁性问题。


0

你需要同时执行以下两个操作:

SELECT * FROM Table WHERE Text IS NULL or Text LIKE ''


0

我知道有很多关于这个问题的替代方案,但我只想把我在@Eric Z Beard和@Tim Cooper与@Enrique Garcia和@Uli Köhler中发现的最佳解决方案放在一起。

如果需要处理空格仅在您的用例场景中可能与空值相同的事实,因为下面的查询将返回1而不是0。

SELECT datalength(' ')

因此,我会选择类似这样的东西:
SELECT datalength(RTRIM(LTRIM(ISNULL([TextColumn], ''))))

0
DECLARE @temp as nvarchar(20)

SET @temp = NULL
--SET @temp = ''
--SET @temp = 'Test'

SELECT IIF(ISNULL(@temp,'')='','[Empty]',@temp)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接