2009-07-25 11 views
9

टीएसक्यूएल - कैसे पता लगाएं कि कॉलम में char(32) है?टीएसक्यूएल - कैसे एक कॉलम में स्पेस चार (32) है?

select * 
from [sometable] 
where CHARINDEX(' ', [somecolumn]) > 0 

काम नहीं करता है? कोई विचार?

+0

क्या काम करते हैं और क्या असफल मूल्यों? – gbn

+0

कुछ प्रकार का क्षेत्र किस प्रकार है? –

उत्तर

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

क्षमा करें, लेकिन यह मेरे लिए काम नहीं करता है। –

+0

दिलचस्प। यह काम नहीं करता है। एक चार कॉलम के लिए, यह सभी पंक्तियों को वापस करता है। वर्कर के लिए यह काम करता है जैसा आप उम्मीद करेंगे। – Joe

+2

@ जो। CHAR कॉलम स्पेस पैड हैं, क्योंकि वे निश्चित आकार हैं। –

2

"काम नहीं करता" से आपका क्या मतलब है? दोनों तरीके मेरे लिए काम करते हैं:

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

मेरे परिस्थिति के लिए बिल्कुल सही नहीं था, लेकिन निश्चित रूप से मुझे एक करीब उपाय। इसे पेश करने का यह तरीका मेरे साथ एक तार मारा। धन्यवाद। – CSS

8

आपको CHARIM CHARIM कॉलम करना होगा।

CHAR कॉलम अधिकतम लंबाई तक दाईं ओर रिक्त स्थान के साथ गद्देदार हैं।

आरटीआरआईएम अधिकतम लंबाई से कम तारों को संग्रहीत करते समय झूठी सकारात्मकताओं से बचने में मदद करता है।

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

और 'ltrim()' 'rtrim (ltrim (col)) के रूप में' '? – Coops

+0

@CodeBlend CHAR कॉलम अधिकतम लंबाई तक दाईं ओर रिक्त स्थान के साथ गद्देदार हैं। आरटीआरआईएम अधिकतम लंबाई से कम तारों को संग्रहीत करते समय झूठी सकारात्मकताओं से बचने में मदद करता है। एलटीआरआईएम इससे बचने में मदद नहीं करता है, और यदि आप मूल्य की शुरुआत में रिक्त स्थान ढूंढना चाहते हैं तो वास्तव में झूठी नकारात्मकताओं का कारण बन सकता है। –

4

निम्न उदाहरण उदाहरण देकर स्पष्ट करना चाहिए तुम ऐसा कैसे हासिल कर सकते हैं।

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

को देखते हुए क्या तुम सच में नहीं समझाया गया है कि समस्या क्या है ...

आप hardspace (nbsp), CHAR(160) के लिए देख रहे हैं? या tab CHAR(9)? इन रिक्त स्थान की तरह लग रही है लेकिन

+0

ओपी स्पेस चार (32) नहीं कहता है? –

+1

हां, लेकिन अन्य पोस्टर ने चार (32) कार्यों का प्रदर्शन किया। तो मैं विकल्प प्रदान करता हूं ... – gbn

0

मेरे लिए काम किया अनुसरण नहीं कर रहे कर सकते हैं:

PrdPicture LIKE '%'+char(160)+'%' 
संबंधित मुद्दे