2010-07-19 17 views
5

Boşluk ve sondaki joker karakterlerle çalışmak için benzer ifadeyi alamıyorum. şöyle My sorgu gider:tsql joker karakter ve iz alanı gibi kullanarak?

select * from Table where Field like 'Desc_%'

veri boşlukla ayrılmış böyle devam Desc Top, aza Bottom ve gibidir. Sorgu 'Desc_%' desenini kullandığımda ancak 'Desc%' desenini kullandığımda çalışmıyor. Alan nvarchardır (255).

Herhangi bir fikrin var mı?

DÜZENLEME

veri sekme ile sınırlandırılmış olduğunu ve 2008 Management Studio bir değer kopyalanan zaman uzaya sekmeyi dönüştürülmüş çıkıyor. Aptal bir hata. [] Ipucunu beğendim ve cevabı işaretledim. Herkese teşekkürler, kopya sonuçlarından kopyaya güvenmemeyi hatırlayacağım.

+0

"Beğen" Desc% '"ifadesinin neden çalışmadığı belirli bir neden var mı? – AllenG

+0

@AllenG - "LIKE Desc%" kendini "Desc" ile sınırlandırmaz (Desc-blank), "Desc" – DaveE

+0

@DaveE ile başlayan her şeyi alır - evet, ama eğer tek şey Onun sütununda 'Desc Top', 'Desc Bottom', 'Desc InsideOut', vb. ve 'Charlemaine'nin Descendant'ı' olabilir, Like Desc% 'i kullanmak için pratik bir blok yoktur. Tabii bu diğer değerleri de içeriyorsa, tabii ki bir problemi olur. – AllenG

cevap

3

Eşleşecek tek karakterli bir sınıf ayarlamak için parantezleri kullanın '[' & ']'. eklemek örnek, bağlantı

CREATE TABLE #findtest (mytext varchar(200)) 

insert #findtest VALUES ('Desc r') 
insert #findtest VALUES ('Descr') 

select * from #findtest where mytext like 'Desc[ ]%' 

DROP TABLE #findtest 

(1 row(s) affected) 

(1 row(s) affected) 
mytext 
-------- 
Desc r 

(1 row(s) affected) 

this makalesine bakın: Senin durumunda SQL gibi görünmelidir:

EDIT'e "Alan 'Desc []%' gibi nereye Tablo seçin *".

+0

Bahşiş için teşekkürler. Bu çalışıyor. Zaman harcadığın için üzgünüm. Veriler bir alan değil bir sekme vardı. Değeri Management Studio kılavuzundan kopyaladım ve sekmeyi bir alana dönüştürdüm. – Steve

0

Alt çizgi tek karakterli bir joker karakter olduğundan ve yüzde birden çok karakterli joker karakter olduğundan, aynıdır ("%" ve "_%"). İki ardışık joker için soruyormuşsunuz gibi. Sorunuzu anladığımdan emin değilim, ancak beklediğiniz gibi davranmadığını şaşırmadım.

0

ASCII değerini kullanarak, bir alan istediğinizi açıkça belirtmeyi düşünün?

SELECT * FROM Table WHERE Field Like 'Desc' + CHAR(32) + '%' 
İlgili konular