2017-06-19 6 views
0

いくつかの列がNULLかどうかをフィルタリングするためにストアドプロシージャを書きたいと思っています。以下のコードは私のものですが、動作しません。ltrimとitrimを使用する

procedure .[s p_organization](@expert nvarchar(100), 
    @name nvarchar(100), @last_name nvarchar(200), 
    @organization n varchar(200)) 




where 
    ((Person.expert LIKE @expert or Person.expert LIKE @expert) 
    and (is null(l trim(r trim @last_name)),'')='' 
    or person.last_name like @last_name + '%' 
    and Person.Name LIKE @name 
    or @name is null 
    and Organization.Name LIKE N'%'[email protected] +'%') 
+0

どこに 'SELECT'句がありますか –

+0

これは標準SQLが無効ですどのDBMSを使用していますか –

+0

クエリに文法上および論理上の間違いが多すぎます –

答えて

0

orand混合を使用しているとき()を追加します。

  • A AND B OR CA AND BC完全に独立して戻ります。
  • A AND (B OR C) will return AとB or AとC '(あなたの場合は、データ

の内容によって:

((Person.expert LIKE @expert or Person.expert LIKE @expert) 
    and ((is null(l trim(r trim @last_name)),")=" 
    or person.last_name like @last_name + '%') 
    and (Person.Name LIKE @name 
    or @name is null) 
    and Organization.Name LIKE N'%'[email protected] +'%') 

は良い仕事かもしれない(あなたがあなた自身の目的のためにチューンそれをする必要があり結果が

+0

それは私の問題を解決しません。 – tanin

+0

私はあなたの 'または'ステートメントを実行する場所がわからないので、あなたの完全な問題を解決することを期待していませんでした。 'または'ステートメントは複雑なステートメントで使用されているときに正しい動作をするには '()'が必要です。 –

関連する問題