我想將一個類似參數設置爲一個變量並允許該變量接受通配符(mssql 2005)。如果我使用我的參數集'%'它只返回一個子集,但如果我硬編碼查詢使用'%'它將返回完整的集合。爲什麼變量的行爲可能與字符串不同?聲明變量的行爲與硬編碼字符串不同
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 '%';
完整場景基於標誌切換但高於
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;
由於
@wareno等於'%000' –
但是你想要做什麼?你沒有指定使用'LIKE'謂詞比較哪些字符串,就像'%''爲什麼? –
我實際上是在預先設定的值和基於另一個標誌的通配符之間切換@wareno。在某些情況下,我需要覆蓋輸入的值並選擇所有wareno – Joe