如何删除SQL Server列中带有“空字符串”的行?

问题描述

我有很多行/记录,其中一列(movieId)没有任何有用的值:

enter image description here

根据答案here,以下方法应该起作用:

enter image description here

...但是没有,正如您在矩形的“不影响行”中看到的那样

如何消除/删除MovieId列中的所有行,什么都没有(除了空白)?

解决方法

关于为何无法删除IS NULL的一种解释是,MovieId的值是空字符串,而不是NULL。您可以使用以下选项同时处理NULL和空字符串:

DELETE
FROM dbo.ACTORS_MOVIES_M2M
WHERE COALESCE(MovieId,'') = '';
,

也许是吗?

DELETE
FROM dbo.ACTORS_MOVIES_M2M
WHERE NULLIF(MovieId,'') IS NULL;
,

请注意,您上面的示例似乎有多个空格,而不只是一个空白值。

因此,您可以使用与上面类似的内容将其删除,但要有修饰。

FROM dbo.ACTORS_MOVIES_M2M
WHERE LTRIM(MovieId) = '' OR Movie_ID IS NULL;

您还可以使用上方的COALESCE / NULLIF选项,例如,

FROM dbo.ACTORS_MOVIES_M2M
WHERE COALESCE(LTRIM(MovieId),'') = '';