簡體   English   中英

SQL存儲過程添加到語句

[英]SQL Stored Procedure adding to statement

問題:

我想將一個值@Test傳遞到存儲過程中,我知道當@Test是某些值時,一切都很好。 但是我想在一個@Test值下過濾表/ Gridview中的幾個值。

即用戶搜索“紅色”,我想顯示“紅色”,“粉紅色”等...

我敢肯定一定有很多例子,但我已經搜索但沒有找到它們。 我已經嘗試過BEGIN和IF語句。

如果.net,我會添加一個If @Text ='Pink'然后sql = sql&...語句...

到目前為止,我有...

SELECT * FROM TblColours
WHERE 

Room LIKE  '%' + @sRoom + '%'   
or Colours LIKE  '%' + @sColours  + '%' 

IF @sColours  = 'Pink'
or Colours = 'Red'
or Colours = 'Shade of Pink'

END   

我同意安德魯(Andrew)的觀點,將顏色及其分組存儲在單獨的表中會容易得多-看起來可能類似於以下內容(使用了兩個新表,即#Colours和#Colourgroups)。

-- SETUP TABLES AND VALUES
----------------------------------------------------------------------------------------------
IF OBJECT_ID('tempdb.dbo.#Colours') IS NOT NULL DROP TABLE #Colours
IF OBJECT_ID('tempdb.dbo.#TblColours') IS NOT NULL DROP TABLE #TblColours
IF OBJECT_ID('tempdb..#ColourGroups') IS NOT NULL DROP TABLE #ColourGroups

CREATE TABLE #Colours
( Id        INT         NOT NULL PRIMARY KEY CLUSTERED
 ,GroupId   INT         NOT NULL
 ,Name      VARCHAR(50) NOT NULL)

CREATE TABLE #ColourGroups
( Id    INT         NOT NULL PRIMARY KEY CLUSTERED
 ,Name  VARCHAR(50) NOT NULL)

CREATE TABLE #TblColours
( Room      VARCHAR(50) NOT NULL
 ,ColourId  INT         NOT NULL)

INSERT #Colours
    SELECT * FROM
        (SELECT 1 AS Id, 1 AS GroupId, 'Red'        AS Name UNION
         SELECT 2 AS Id, 2 AS GroupId, 'Orange'     AS Name UNION
         SELECT 3 AS Id, 3 AS GroupId, 'Yellow'     AS Name UNION
         SELECT 4 AS Id, 1 AS GroupId, 'Pink'       AS Name UNION
         SELECT 5 AS Id, 1 AS GroupId, 'Scarlet'    AS Name UNION
         SELECT 6 AS Id, 1 AS GroupId, 'Rose'       AS Name)        AS SomeRandomColours
    ORDER BY Id

INSERT #ColourGroups
    SELECT * FROM 
        (SELECT 1 AS Id, 'Red'      AS Name UNION
         SELECT 2 AS Id, 'Orange'   AS Name UNION
         SELECT 3 AS Id, 'Yellow'   AS Name)        AS SomePossibleGroups
    ORDER BY Id

INSERT #TblColours Values ('Gail''s Bedroom', 6)
INSERT #TblColours Values ('The Horrid Bathroom', 2)
INSERT #TblColours Values ('The Main DrawingRoom', 5)
INSERT #TblColours Values ('Paul and Barbara''s Bedroom', 4)
INSERT #TblColours Values ('Paul''s Study', 1)

----------------------------------------------------------------------------------------------
-- Include Derived colour working back from the group if you want to find all the colours in
-- the same group as your search.
DECLARE
     @sRoom     VARCHAR(50) = 'Barbara'
    ,@sColours  VARCHAR(50) = 'Pink'

SELECT DISTINCT
     Room.Room
    ,Colour.Name

FROM        #TblColours     AS Room
INNER JOIN  #Colours        AS Colour           ON Room.ColourId = Colour.Id
INNER JOIN  #ColourGroups   AS ColourGroup      ON Colour.GroupId = ColourGroup.Id
INNER JOIN #Colours         AS DerivedColour    ON ColourGroup.Id = DerivedColour.GroupId
WHERE 
    Room LIKE  '%' + @sRoom + '%'   
OR Colour.Name = @sColours
OR ColourGroup.Name = @sColours
OR DerivedColour.Name = @sColours

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM