私は "MachineModel"データベースのカスタマイズされた検索を有効にするためにいくつかの既定値を持つ単純なストアドプロシージャを作成しました。SQL Server Express 2008 R2 - テキストフィールドの角括弧は結果を返しません
Model.[ModelName] LIKE '%' + ISNULL(@ModelName, Model.[ModelName]) + '%'
部分一致を可能にする必要があります
は、WHERE句の一部として、私はこのようなものを持っています。しかし、これは大半のモデルで有効ですが、@ ModelNameに値が指定されていない場合、ISNULLはModel。[ModelName]に解決され、基礎となるフィールドデータには "Lenny's Test Model [2010]"などの角括弧が含まれます。これらのレコードレコードはSProcによって返されません。
これは大きな問題ではありませんが、実際には4つのモデル(約120,000)の名前に角括弧が含まれているため、簡単に変更することができますが、何が起こっているのか、これを解決する。
乾杯、
レニー。 % _ [
は:
返信ありがとうございます - 私は、ちょうど約重複した選択を持って、私が住むことができるようにIfステートメントに行きました。ちなみに、モデルとの比較が高価だと言うと、このアプローチはより良いでしょうかhttp://weblogs.asp.net/rmclaws/archive/2004/02/18/75381.aspx? –
isnullソリューションを試しましたか?このような簡単なクエリの場合、比較は簡単で無視されます。試してみてください... – gbn
@Leonard - これは1つまたは2つの述語では問題ありません。値がオプションでORが導入され、大きなレコードセットと適切な負荷がある場合は、パフォーマンスの問題が発生します。検索/フィルタフォームの場合は、sqlをコードで構築する方が良いかもしれません(SQLインジェクションを防ぐためにsqlパラメタを使用します)。 –