7

ネストされた if else ステートメントの結果に応じて「0」または「1」を返す関数を作成しています。MSSQL の使用。

ALTER FUNCTION udf_check_names_starting_with_quotationmark
(@string NVARCHAR(100))
RETURNS INT
AS
BEGIN
  DECLARE @condition INT
  SET @string = LTRIM(@string)
  SET @string = RTRIM(@string)

  IF (PATINDEX('"%', @string) !=0)
    BEGIN
      SET @condition = 1
    END
  ELSE IF (PATINDEX('%"%', @string) !=0) 
    BEGIN
      SET @condition=1
    END
  ELSE IF (PATINDEX('%"', @string) !=0)
    BEGIN
      SET @condition = 1
    END
  ELSE
    BEGIN
      SET @condition=0
    END
  RETURN @condition
END

これですべてが正常に機能しています。これを達成するためのより良い方法はありますか (OR を使用してみましたが、SQL エディターにエラーが表示され、OR が認識されません)。

4

2 に答える 2

3

確かに、これは次のように単純化できます。

  IF (PATINDEX('%"%', @string) !=0) 
    BEGIN
      SET @condition=1
    END
  ELSE
    BEGIN
      SET @condition=0
    END

-PATINDEX('%"%', @string)が > 0 になるので、PATINDEX('"%', @string)または PATINDEX('%"', @string) が > 0 の場合?

于 2013-04-09T11:41:28.940 に答える