2009-07-25 31 views

Trả lời

0
select * from [sometable] where somecolumn like '% %' 
+0

xin lỗi, nhưng điều đó không hiệu quả đối với tôi. –

+0

Thú vị. Nó không hoạt động. Đối với một cột char, nó trả về tất cả các hàng. Đối với varchar nó hoạt động như bạn mong đợi. – Joe

+2

@Joe. Các cột CHAR là khoảng trống, vì chúng là kích thước cố định. –

2

Bạn có ý nghĩa gì khi "không hoạt động"? Cả hai cách đều phù hợp với tôi:

SELECT ''''+a+'''' FROM(
SELECT 'asd fgh' AS a UNION ALL 
SELECT ' fgh' AS a UNION ALL 
SELECT 'asd ' AS a UNION ALL 
SELECT 'asfdg') As t 
WHERE a LIKE '% %' 

--------- 
'asd fgh' 
' fgh' 
'asd ' 

SELECT ''''+a+'''' FROM(
SELECT 'asd fgh' AS a UNION ALL 
SELECT ' fgh' AS a UNION ALL 
SELECT 'asd ' AS a UNION ALL 
SELECT 'asfdg') As t 
WHERE CHARINDEX(' ', a) > 0 

--------- 
'asd fgh' 
' fgh' 
'asd ' 
+0

Không phải là một sửa chữa chính xác cho tình trạng khó khăn của tôi, nhưng chắc chắn đã cho tôi gần gũi hơn với một dung dịch. Cách trình bày này đánh một hợp âm với tôi. Cảm ơn. – CSS

8

Bạn phải rtrim CHAR cột.

CHAR cột được đệm bằng dấu cách ở bên phải lên đến độ dài tối đa.

RTRIM giúp tránh dương tính giả khi lưu trữ các chuỗi ngắn hơn độ dài tối đa.

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 '% %' 

nospaces 
i|have|a|space 
space|bar 

select replace(foo,' ','|') from dropme 
where rtrim(foo) like '% %' 

i|have|a|space 
space|bar 
+0

và 'ltrim()' như trong 'rtrim (ltrim (col))'? – Coops

+0

@CodeBlend CHAR cột được đệm với không gian bên phải lên đến độ dài tối đa. RTRIM giúp tránh những sai lầm tích cực khi lưu trữ các chuỗi ngắn hơn độ dài tối đa. LTRIM không giúp tránh điều đó, và thực sự có thể gây ra các âm bản sai nếu bạn muốn tìm các khoảng trống ở đầu giá trị. –

4

Ví dụ sau đây sẽ minh họa làm thế nào bạn có thể đạt được điều này.

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; 
0

Với bạn đã không thực sự giải thích vấn đề là gì ...

Bạn đang tìm kiếm hardspace (nbsp), CHAR(160)? Hoặc tab CHAR(9)? Đây có thể trông giống như không gian nhưng không

+0

OP nói không gian char (32) không? –

+1

Có, nhưng các áp phích khác chứng minh char (32) hoạt động. Vì vậy, tôi cung cấp các lựa chọn thay thế ... – gbn

0

Sau đây làm việc cho tôi:

PrdPicture LIKE '%'+char(160)+'%' 
Các vấn đề liên quan