sql-server - serverバージョン - sql server management studio



SQL LIKEステートメントで変数を使用する (5)

私はsproc(MSSQL 2k5)を持っているので、LIKE clausのように変数を取るようになります:

DECLARE @SearchLetter2 char(1)
SET @SearchLetter = 't'
SET @SearchLetter2 = @SearchLetter + '%'
SELECT *
    FROM BrandNames 
    WHERE [Name] LIKE @SearchLetter2 and IsVisible = 1 
    --WHERE [Name] LIKE 't%' and IsVisible = 1 
    ORDER BY [Name]

残念ながら、現在実行されている行は構文エラーをスローしますが、コメント付きのwhere節は正常に実行されます。 誰も私が非コメントの行を働かせるのを助けることができますか?

https://ffff65535.com


DECLARE @ SearchLetter2 char(1)

これを長い文字に設定します。


Joelは@SearchLetterがまだ宣言されていないのですか? また、@ SearchLetter2の長さは 't%'のために十分ではありません。 より長い長さのvarcharを試してください。


ストアドプロシージャを使用している場合:

ALTER PROCEDURE <Name>
(
    @PartialName VARCHAR(50) = NULL
)

SELECT Name 
    FROM <table>
    WHERE Name LIKE '%' + @PartialName + '%'

私たちも直接書くことができます...

DECLARE @SearchLetter CHAR(1) 

SET @SearchLetter = 'A' 

SELECT * 
FROM   CUSTOMERS 
WHERE  CONTACTNAME LIKE @SearchLetter + '%' 
       AND REGION = 'WY' 

または次のように、すべての検索文字を追加する必要がある場合は、

DECLARE @SearchLetter CHAR(1) 

SET @SearchLetter = 'A' + '%' 

SELECT * 
FROM   CUSTOMERS 
WHERE  CONTACTNAME LIKE @SearchLetter 
       AND REGION = 'WY' 

両方とも動作します


Andrew Browerのように

ALTER PROCEDURE <Name>
(
    @PartialName VARCHAR(50) = NULL
)

SELECT Name 
    FROM <table>
    WHERE Name LIKE '%' + LTRIM(RTRIM(@PartialName)) + '%'




sql-server