2017-02-22 130 views
1

我想動態搜索表內的結果。這就是爲什麼我創建了@MEST_CDO_SEARCH變量。這個變量看起來像查詢的一部分,之後是動態填充的結果:插入動態WHERE條件

DECLARE @MEST_CDO_SEARCH NVARCHAR(MAX); 


SELECT @MEST_CDO_SEARCH = STUFF((SELECT 'OR MEST.MEST_CDO LIKE ''%' + _MEST_CDO2 + '%'' ' 
FROM @tblEAN128 
FOR xml path('')),1,3,'') 

@MEST_CDO_SEARCH後看起來是這樣的:

@MEST_CDO_SEARCH:

MEST.MEST_CDO LIKE '%QzYyOUhNIE1L%' OR MEST.MEST_CDO LIKE '%Uks3MkNOIE1L%' 

查詢搜索是這樣的(只是部分裏面WHERE條件查詢):

(@xmlMEST_CDO2 IS NULL OR @xmlMEST_CDO2 IS NOT NULL AND MEST.MEST_CDO LIKE '%' + (SELECT EAN128._MEST_CDO2 FROM @tblEAN128 EAN128) + '%') 

最後這個查詢的一部分:

MEST.MEST_CDO LIKE '%' + (SELECT EAN128._MEST_CDO2 FROM @tblEAN128 EAN128) + '%' 

必須是動態的。但我不知道如何插入@MEST_CDO_SEARCH?我想WHERE看起來像這樣:

(@xmlMEST_CDO2 IS NULL OR @xmlMEST_CDO2 IS NOT NULL 
AND MEST.MEST_CDO LIKE '%QzYyOUhNIE1L%' OR MEST.MEST_CDO LIKE '%Uks3MkNOIE1L%') 

回答

2

使用動態SQL這樣的:

DECLARE @sql nvarchar(max) 

SET @sql = 'SELECT * .............(your query)..........' + 
      'WHERE (@xmlMEST_CDO2 IS NULL OR @xmlMEST_CDO2 IS NOT NULL AND ('[email protected]_CDO_SEARCH+'))' 

EXEC sp_executesql @sql