2010-07-19 16 views
5

Non riesco a ottenere la dichiarazione mi piace per lavorare con lo spazio e il carattere jolly finale. La mia domanda è la seguente:tsql utilizza come con caratteri jolly e lo spazio finale?

select * from Table where Field like 'Desc_%'

I dati sono delimitato da spazi quali, Desc Top, Desc inferiore e così via. La query funziona quando uso il pattern 'Desc_%' ma non quando utilizzo il pattern 'Desc%'. Il campo è nvarchar (255).

Qualche idea?

EDIT

scopre il dati delimitato da tabulazioni era e quando ho copiato un valore dal 2008 Management Studio ha convertito la scheda nello spazio. Errore stupido Mi è piaciuto il [] suggerimento quindi l'ho contrassegnato come risposta. Grazie a tutti, ricorderò di non fidarmi della copia dei risultati della griglia.

+0

C'è un motivo specifico per cui "mi piace" Desc% "" non funzionerà? – AllenG

+0

@AllenG - "LIKE Desc%" non si limiterà a "Desc" (Desc-blank), prenderà tutto ciò che inizia con "Desc" – DaveE

+0

@DaveE - sì, lo sarà, ma se le uniche cose che potrebbe essere nella sua colonna sono "Desc Top", "Desc Bottom", "Desc InsideOut", ecc., e mai "Discendente di Charlemaine", non c'è un blocco pratico nell'utilizzo di Like Desc%. Se il suo tavolo contiene quegli altri valori, ovviamente, avrebbe un problema. – AllenG

risposta

3

Usa parentesi '[' & ']' per impostare una classe a carattere singolo da abbinare. Nel tuo caso SQL dovrebbe essere simile a questo: "select * from Tabella dove campo come 'Desc []%'"

EDIT: aggiungere campione, collegamento

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) 

Vedere this articolo.

+0

Grazie per il suggerimento. Questo funziona. Mi dispiace per averti fatto perdere tempo. I dati avevano una tabulazione non uno spazio. Ho copiato il valore dalla griglia di Management Studio e ha convertito la scheda in uno spazio. – Steve

0

Poiché un carattere di sottolineatura è un carattere jolly a carattere singolo e percentuale è il carattere jolly a più caratteri, sono uguali ("%" e "_%"). È come se tu stia chiedendo due caratteri jolly consecutivi. Non sono sicuro di aver compreso la tua domanda, ma non sono sorpreso che non si comporti come ti aspetti.

0

Considerare affermando esplicitamente che si desidera uno spazio, utilizzando il suo valore ASCII?

SELECT * FROM Table WHERE Field Like 'Desc' + CHAR(32) + '%' 
Problemi correlati