2009-08-07 4 views
1

Das finde ich sehr seltsam auf Microsoft SQL Server:Warum gibt LIKE keine Zeilen für Variablen mit '%' am Ende zurück?

SELECT * FROM deliveries WHERE code LIKE '01999195000%' 
-- 9 rows returned. Works. 

DECLARE @a VARCHAR(10) 
SET @a='01999195000%' 
SELECT * FROM deliveries WHERE code LIKE @a 
-- 0 rows returned? Why not? 

SET @a = '01999195000' 
SELECT * FROM deliveries WHERE code LIKE @a + '%' 
-- 9 rows returned. Works. 

Was zwischen der Suche nach @a unterscheidet, die das% -Zeichen enthält, und eine, die nicht der Fall ist, sondern hat ‚%‘ angehängt?

Wenn einer von euch SQL Gurus Ihre Gedanken teilen könnte, wäre das großartig.

Antwort

27

Es ist, weil Sie @a als VARCHAR (10) definiert haben, aber Sie haben versucht, setzen 12 Zeichen hinein ... das „%“ bedeutet, wird vom Ende verloren

+0

Schön! Ich habe das nicht bemerkt - – Dirk

+0

+1 - Guter Fang. –

+1

Eigentlich zähle ich 12, aber der Punkt ist immer noch gültig. –

-2

LIKE ist ein Platzhalter Charakter, was "alles was du magst" bedeutet.

+1

Wahr, aber das ist nicht das Problem, wenn der Code zur Verfügung gestellt wird. Ich denke AdaTheDev hat die Antwort. – JohnFx

+0

Ja, das klingt richtig. –

3

DECLARE @a VARCHAR (10) ist die Antwort. @a enthält niemals%.

+1

+1 doh !, verpasste eine Tonne von oben Stimmen von nur ein wenig .... –

+0

Haha, danke! : P –

Verwandte Themen