0

次のテーブル「マネージャー」があります(簡略化):

ID, int
Name, nvarchar(100)

1 つの引数 (「検索」、nvarchar 型) を持つストアド プロシージャで、すべての行を選択したい

  1. ID-Column は正確に @Search OR
  2. Name-Column には @Search が含まれています。

現時点では、ストアド プロシージャでの選択は次のようになります。

SELECT ID, Name FROM Managers WHERE
(ISNUMERIC(@Search) = 1 AND [ID] = CAST(@Search AS INT)) Or
Contains([Name], @Search)

@Search = 1321 (例) でストアド プロシージャを呼び出すと、select が機能します。

しかし、@Search - 数値ではないパラメーター (たとえば "HES") がある場合、次のエラーが発生します: nvarchar 値 'HES' をデータ型 int に変換するときに変換に失敗しました。

どうすればこれを修正できますか?

前もって感謝します

ラフィ

4

1 に答える 1

0
SELECT ID, Name FROM Managers
WHERE [ID] = CASE
               WHEN ISNUMERIC(@Search) = 1 AND @Search NOT LIKE '%.%' THEN CAST(@Search AS INT)
               ELSE -1
             END
OR Contains([Name], @Search)
于 2011-08-18T09:03:22.893 に答える