TSQL - cách tìm xem cột có không gian char(32)
?TSQL - làm thế nào để tìm thấy nếu một cột có một char không gian (32)?
select *
from [sometable]
where CHARINDEX(' ', [somecolumn]) > 0
không hoạt động? Ý tưởng nào?
TSQL - cách tìm xem cột có không gian char(32)
?TSQL - làm thế nào để tìm thấy nếu một cột có một char không gian (32)?
select *
from [sometable]
where CHARINDEX(' ', [somecolumn]) > 0
không hoạt động? Ý tưởng nào?
select * from [sometable] where somecolumn like '% %'
xin lỗi, nhưng điều đó không hiệu quả đối với tôi. –
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
@Joe. Các cột CHAR là khoảng trống, vì chúng là kích thước cố định. –
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 '
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
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
và 'ltrim()' như trong 'rtrim (ltrim (col))'? – Coops
@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ị. –
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;
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
OP nói không gian char (32) không? –
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
Sau đây làm việc cho tôi:
PrdPicture LIKE '%'+char(160)+'%'
gì giá trị công việc và những gì không? – gbn
Loại trường là gì? –