Próbuję ustawić podobny parametr w zmiennej i zezwolić tej zmiennej na akceptację dzikich kart (mssql 2005). Jeśli użyję mojego zestawu parametrów do "%", to zwraca tylko częściowy podzbiór, ale jeśli twarde kodowanie kwerendy do użycia '%' zwróci pełny zestaw. Dlaczego zmienna może zachowywać się inaczej niż łańcuch?Zdeklarowana zmienna zachowuje się inaczej na sztywno zakodowanym łańcuchu
DECLARE @wareno char(4);
SET @wareno = '%';
select @wareno as a, * from waredesc where wareno like @wareno;
vs
DECLARE @wareno char(4);
SET @wareno = '%';
select @wareno as a, * from waredesc where wareno like '%';
Pełne scenariusz jest przełączanie oparte na fladze ale jest powtarzalne pod kodem powyżej
DECLARE @wareno char(4);
DECLARE @delprods bit;
/**
SET THESE PARAMETERS
**/
SET @wareno = '1';
SET @delprods = 'true'; /** if true all the warehouses should also be emptied for safety - products are held at a company level!**/
IF @delprods = 1
BEGIN
SET @wareno = '%';
END
select @wareno as a, * from waredesc where wareno like @wareno;
Dzięki
@wareno jest równe '% 000' –
Ale co próbujesz zrobić? nie określiłeś, które ciągi do porównania używają predykatu 'LIKE', po prostu' like '%' 'Why ?? –
W rzeczywistości przełączam @wareno między wartością preentered i wildcard na podstawie innej flagi. W niektórych scenariuszach muszę zastąpić wprowadzoną wartość i wybrać cały wareno – Joe