TSQL - 如何查找列是否有空格char(32)?

11 sql t-sql sql-server

TSQL - 如何查找列是否有空格char(32)

select *
from [sometable]
where CHARINDEX(' ', [somecolumn]) > 0
Run Code Online (Sandbox Code Playgroud)

不起作用?有任何想法吗?

Joe*_*Joe 11

你必须rtrim CHAR列.

CHAR列在右侧填充空格,直到最大长度.

当存储短于最大长度的字符串时,RTRIM有助于避免误报.

select * from [table] where rtrim(col) like '% %'



create table dropme
(foo char(32))

insert into dropme values('nospaces')
insert into dropme values('i have a space')
insert into dropme values('space bar')

select replace(foo,' ','|') from dropme
where foo like '% %'
Run Code Online (Sandbox Code Playgroud)
nospaces
i|have|a|space
space|bar

select replace(foo,' ','|') from dropme
where rtrim(foo) like '% %'
Run Code Online (Sandbox Code Playgroud)
i|have|a|space
space|bar
Run Code Online (Sandbox Code Playgroud)


Joh*_*som 6

下面的示例应说明如何实现此目的。

create table #tableTest
(
    someData varchar(100) not null
);

insert into #tableTest(someData) values('dsadsa');
insert into #tableTest(someData) values('fdssf 432423');
insert into #tableTest(someData) values('432423fsdv');
insert into #tableTest(someData) values('321 jhlhkj 543');



select * 
from #tableTest;

select * 
from #tableTest 
where charindex(char(32),someData) > 0;

drop table #tableTest;
Run Code Online (Sandbox Code Playgroud)


Kel*_*net 0

select * from [sometable] where somecolumn like '% %'
Run Code Online (Sandbox Code Playgroud)

  • @乔。CHAR 列是用空格填充的,因为它们的大小是固定的。 (2认同)