私はこの行をSET @WhereClause= @WhereClause + 'con.BusinessName LIKE ' + '%'+CONVERT(VARCHAR,@BusinessName) + '%' + ' AND ';
に連結しようとしています。Where節を連結する方法
私はあなたが本当にパラメータを使用する必要があります。このSET @WhereClause= con.BusinessName LIKE '%Hello%' AND ';
私はこの行をSET @WhereClause= @WhereClause + 'con.BusinessName LIKE ' + '%'+CONVERT(VARCHAR,@BusinessName) + '%' + ' AND ';
に連結しようとしています。Where節を連結する方法
私はあなたが本当にパラメータを使用する必要があります。このSET @WhereClause= con.BusinessName LIKE '%Hello%' AND ';
のようになりたいです。しかし、単一引用符が必要です。
'''%'+CONVERT(VARCHAR(255), @BusinessName) + '%'''
また、SQL ServerではVARCHAR()
の長さを指定する必要があります。コンテキストはデフォルトによって異なり、デバッグの問題は非常に困難です。
注:@BusinessName
に一重引用符がある場合、これは失敗します。考えてみましょう。あなたは@BusinessName
は、単一引用符が含まれている場合破るためにあなたのコードを回避し、可能性を排除することができますQUOTENAME
機能付
SET @WhereClause = @WhereClause + 'con.BusinessName LIKE ' + QUOTENAME('%' + CONVERT(varchar(126), @BusinessName) + '%', '''') + ' AND ';
:
また、あなたはQUOTENAME
機能(SQL Server 2008および上記)を使用することができます(例えば、@BusinessName
がUIから直接値を取得した場合、Webアプリケーション/ APIのクエリのパラメータまたはリクエストボディを使用している場合など)。
QUOTENAME
は、動的SQLで有効な区切り識別子を作成するためのものですが、使用することもできます。
関数は、入力文字列としてnvarchar(128)
を受け付け、@BusinessName
長い126文字(128マイナス2 %
文字)を超える場合には、NULL
を返します。だから、あなたはその縁の場合を世話する必要があります。
ありがとう@Gordon Linoff –