129

SQL のすべての特殊文字の完全なリストは何ですか (私は SQL Server に興味がありますが、他のものも良いでしょう) LIKE 句は?

例えば

SELECT Name FROM Person WHERE Name LIKE '%Jon%'

SQL サーバー:

  1. %
  2. _
  3. [指定子] 例 [az]
  4. [^指定子]
  5. ESCAPE 句 例 %30!%%' ESCAPE '!' 30% を true と評価します
  6. ' 文字は ' でエスケープする必要があります。たとえば、they're は they''re になります

MySQL:

  1. %- ゼロ文字以上の任意の文字列。
  2. _- 任意の 1 文字
  3. ESCAPE 句 例 %30!%%' ESCAPE '!' 30% を true と評価します

オラクル:

  1. %- ゼロ文字以上の任意の文字列。
  2. _- 任意の 1 文字
  3. ESCAPE 句 例 %30!%%' ESCAPE '!' 30% を true と評価します

サイベース

  1. %
  2. _
  3. [指定子] 例 [az]
  4. [^指定子]

進捗:

  1. %- ゼロ文字以上の任意の文字列。
  2. _- 任意の 1 文字

    リファレンスガイドはこちら[PDF]

PostgreSQL:

  1. %- ゼロ文字以上の任意の文字列。
  2. _- 任意の 1 文字
  3. ESCAPE 句 例 %30!%%' ESCAPE '!' 30% を true と評価します

ANSI SQL92:

  1. %
  2. _
  3. 指定された場合のみの ESCAPE 文字。

PostgreSQL にSIMILAR TOは、以下を追加する演算子もあります。

  1. [specifier]
  2. [^specifier]
  3. |- 2 つの選択肢のいずれか
  4. *- 前の項目の 0 回以上の繰り返し。
  5. +- 前の項目の 1 回以上の繰り返し。
  6. ()- アイテムをグループ化する

アイデアは、これを「ワンストップ ショップ」にできるコミュニティ Wiki にすることです。

4

5 に答える 5

26

SQL Server の場合、 http: //msdn.microsoft.com/en-us/library/ms179859.aspxから:

  • % 0 文字以上の任意の文字列。

    WHERE title LIKE '%computer%'ブック タイトルのどこかに「computer」という単語が含まれるすべてのブック タイトルが検索されます。

  • _ 任意の 1 文字。

    WHERE au_fname LIKE '_ean'ean で終わる 4 文字の名前 (Dean、Sean など) をすべて検索します。

  • [ ] 指定範囲 ([af]) またはセット ([abcdef]) 内の任意の 1 文字。

    WHERE au_lname LIKE '[C-P]arsen'arsen で終わり、C と P の間の任意の 1 文字で始まる著者の姓 (Carsen、Larsen、Karsen など) を検索します。範囲検索では、照合順序のソート規則によって、範囲に含まれる文字が異なる場合があります。

  • [^] 指定された範囲 ([^af]) またはセット ([^abcdef]) 内にない任意の 1 文字。

    WHERE au_lname LIKE 'de[^l]%'de で始まり、その後の文字が l でないすべての著者の姓。

于 2009-04-03T04:54:09.463 に答える
6

ANSI SQL92 :

  • %
  • _
  • 指定されている場合のみESCAPE 文字。

多くのデータベースが標準の規則に準拠せずに余分な文字を追加したり、不足している場合にデフォルト値の '\' で ESCAPE を誤って有効にしたりすることは残念です。'\' に関する問題はまだ十分ではありません。

ここで DBMS に依存しないコードを記述することは不可能です。なぜなら、どの文字をエスケープする必要があるかわからないためです。標準では、エスケープする必要のないものはエスケープできないと規定されています。(セクション 8.5/一般規則/3.a.ii を参照)

SQLありがとう!ぐんん

于 2009-04-03T06:25:04.970 に答える
5

SQL Server で既存の ' をエスケープするには、余分な ' を追加する必要があることを追加する必要があります。

スミス -> スミス

于 2009-08-19T16:04:19.653 に答える
1

サイベース:

%              : Matches any string of zero or more characters.
_              : Matches a single character.
[specifier]    : Brackets enclose ranges or sets, such as [a-f] 
                 or [abcdef].Specifier  can take two forms:

                 rangespec1-rangespec2: 
                   rangespec1 indicates the start of a range of characters.
                   - is a special character, indicating a range.
                   rangespec2 indicates the end of a range of characters.

                 set: 
                  can be composed of any discrete set of values, in any 
                  order, such as [a2bR].The range [a-f], and the 
                  sets [abcdef] and [fcbdae] return the same 
                  set of values.

                 Specifiers are case-sensitive.

[^specifier]    : A caret (^) preceding a specifier indicates 
                  non-inclusion. [^a-f] means "not in the range 
                  a-f"; [^a2bR] means "not a, 2, b, or R."
于 2009-04-03T04:58:12.573 に答える