0

私はを使用してsql server R2います。2つのパラメータをととして渡すストアドプロシージャがあり@username varchar(100)ます@password varchar(100)

これで、アプリケーションから初めてユーザーを作成するときに、パスワードはNULLになります。

ユーザー名とパスワードを一致させるためのレコードを返すクエリを作成したいと思います。問題は、コードがに渡さempty stringれることstored procedureです。empty string to NULL自動的に考慮または変換するものが必要です。私はすでにこれを使用して解決策を持っていif conditionますが、if条件ではなく単一のクエリを使用したいと思います。

編集 :

その単純なストアドプロシージャ:

CREATE PROCEDURE [dbo].[Pro_TblP]
(
 @userName varchar(100),
 @password varchar(100) 
)
AS
BEGIN
    IF (@password ='')
        BEGIN
            SELECT * FROM TblP 
            WHERE username = @userName AND password IS NULL AND IsDeleted = 0
        END

    ELSE 
        BEGIN
            SELECT * FROM TblP 
            WHERE username = @userName AND password = @password AND IsDeleted = 0
    END
END

GO

クエリを単一の表現に結合したいと思います。if条件は必要ありません。

4

4 に答える 4

1
CREATE PROCEDURE [dbo].[Pro_TblP]
(
 @userName varchar(100),
 @password varchar(100) 
)
AS
BEGIN
   SELECT * FROM TblP 
   WHERE username = @userName AND COALESCE(password,'') = @password AND IsDeleted = 0

END

GO

SQL フィドル

于 2013-03-11T05:24:22.740 に答える
0

以下のコードを試してください: @password が空の文字列または null の場合、すべての値が返されます。@password 変数に文字列を渡すと、それがフィルタリングされます。

CREATE PROCEDURE [dbo].[Pro_TblP]
(
 @userName varchar(100),
 @password varchar(100) 
)
AS
BEGIN
     SELECT * FROM TblP 
         WHERE username = @userName AND IsDeleted = 0
         And (password = @password OR  isnull(@password,'') = '')           

END
于 2013-03-11T05:28:04.643 に答える
0

これを試して

alter PROCEDURE [dbo].[Pro_TblP]
(
 @userName varchar(100),
 @password varchar(100)='' 
)
AS
BEGIN
   BEGIN
      SELECT * FROM TblP 
      WHERE username = @userName AND IsNull(password,'')=@password AND IsDeleted = 0
   END
END
于 2013-03-11T05:29:38.020 に答える
0
SELECT *
FROM TblP 
WHERE username = @userName AND 
      IsDeleted = 0 AND
      (
        password = @password OR
        password IS NULL AND @password = ''
      )
于 2013-03-11T06:48:41.127 に答える