SQL Server:查找包含空格的行

4

我希望能快速查看包含空格的表格中的所有行。

首先,我尝试使用以下查询语句查看以空格开头的行:

select * 
from MyTable 
where ColumnName like ' %'

但是我得到了0个结果,尽管我可以看到有含有空格的行。


当你运行 SELECT * FROM MyTable WHERE LEFT(ColumnName, 1) = ' ' 时,如果返回0行,则它不是你想象中的空格。我建议使用 SELECT ASCII(LEFT(Column, 1)) .. - Ilyes
你所看到的空格可能并不是真正的空格。你可能需要查看二进制值来确定实际存在的字符。 - Gordon Linoff
1
你是在寻找以空格开头或包含空格的行吗?如果是后者,那么你应该使用 select * from MyTable where ColumnName like '% %' - daShier
@Sami:我试过了,但它只会带来以未知字符(��)开头的行;Gordon:我确定这个表格中的数据中有空格;daShier:我也试过了,但是没有结果。 - r.tom
你能提供示例数据和一个CREATE TABLE脚本,以确保我们都讨论同样的数据类型吗? - dougp
4个回答

10

尝试用一下这个:

在SQL服务器中,你可以使用以下代码:

SELECT * FROM MYTABLE 
WHERE CHARINDEX(' ',ColumnName) > 0;

如果您正在使用Oracle,可以使用以下方法:

SELECT * FROM MYTABLE 
WHERE INSTR(ColumnName,' ') > 0;

在此查询中,它查找包含列值中第一个空格的字符位置,当它在其中找到第一个空格时,索引值应大于1,并且应基于所有记录显示。


1
在DB2中,您可以使用LOCATE - Hogan

3
似乎那些空格中含有除char(10)之外的其他特殊字符。
尝试这个:
select * 
from MyTable 
where patindex('%[^A-Z0-9]%',ColumnName )>0

先确定ColumnName的有效值。然后尝试使用PATINDEX,并相应地更改正则表达式。

非常感谢!我尝试了TRIM函数,但它仍然无法去除行首的空格。于是我检查了这些起始空格,并意识到它们与普通空格(' ' vs ' ')有所不同。现在我尝试使用REPLACE命令并剪切/粘贴这个奇怪的空格。 - r.tom

1
尝试再加一个“%”,这可能会解决您的问题。 select * from MyTable where ColumnName like '% %'

-1
select * from TABLE where trim(column_name) IS NULL

2
在SQL Server中,空字符串和null是不同的。我认为你在第一次回答时误解了问题,所以这个答案是错误的。 - undefined

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