1

「[」は、これが機能しない理由について、Unicode文字http://en.wikipedia.org/wiki/List_of_Unicode_characters(私の推測)に分類されていません。

declare @v nvarchar(255)
set @v =  '[x]825' 
select 1 
where  @v like  '[x]825' 
4

2 に答える 2

3

[]パターンマッチの文字範囲を定義します。LIKE ステートメントでは特別な意味があります。 これがそのドキュメントです。

これらの文字を明示的に探している場合は、次のようにエスケープする必要があります。

declare @v nvarchar(255)
set @v =  '[x]825' 
select 1 
where  @v LIKE '![x]825' 
       ESCAPE '!'
于 2009-12-09T18:32:32.820 に答える
1

[x] は、SQL サーバーにとって特定の意味を持ちます。括弧は非常に基本的な正規表現に使用されます。SO を探しているのは、最初の文字に文字 X が含まれている場所であり、もちろんそれは変数の最初の文字ではありません。

ワイルドカードを使用する予定がない限り、like を使用しないことをお勧めします。ワイルドカードを最初の文字にすることは、クエリでインデックスではなくテーブル スキャンを使用するようになるため、悪い習慣です。

于 2009-12-09T18:33:08.200 に答える