2017-07-29 12 views
0

私はこの行をSET @WhereClause= @WhereClause + 'con.BusinessName LIKE ' + '%'+CONVERT(VARCHAR,@BusinessName) + '%' + ' AND ';に連結しようとしています。Where節を連結する方法

私はあなたが本当にパラメータを使用する必要があります。このSET @WhereClause= con.BusinessName LIKE '%Hello%' AND ';

答えて

1

のようになりたいです。しかし、単一引用符が必要です。

'''%'+CONVERT(VARCHAR(255), @BusinessName) + '%''' 

また、SQL ServerではVARCHAR()の長さを指定する必要があります。コンテキストはデフォルトによって異なり、デバッグの問題は非常に困難です。

注:@BusinessNameに一重引用符がある場合、これは失敗します。考えてみましょう。あなたは@BusinessNameは、単一引用符が含まれている場合破るためにあなたのコードを回避し、可能性を排除することができますQUOTENAME機能付

SET @WhereClause = @WhereClause + 'con.BusinessName LIKE ' + QUOTENAME('%' + CONVERT(varchar(126), @BusinessName) + '%', '''') + ' AND ';

+0

ありがとう@Gordon Linoff –

0

また、あなたはQUOTENAME機能(SQL Server 2008および上記)を使用することができます(例えば、@BusinessNameがUIから直接値を取得した場合、Webアプリケーション/ APIのクエリのパラメータまたはリクエストボディを使用している場合など)。

QUOTENAMEは、動的SQLで有効な区切り識別子を作成するためのものですが、使用することもできます。

関数は、入力文字列としてnvarchar(128)を受け付け、@BusinessName長い126文字(128マイナス2 %文字)を超える場合には、NULLを返します。だから、あなたはその縁の場合を世話する必要があります。