2011年8月5日金曜日

Excel, LibreOffice, SQL におけるワイルドカード (*) の意味

1. Excel でワイルドカード

Excel で文字データを入力した。入力中、不明なデータについては、半角で

?

とした。後になって、不明なデータを検索しようと `?’ を検索。しかし、上手くヒットしない。ただし、全角の

で検索すると、半角の ? がヒットした。

なぜなら、Excel では、半角の `?’ が 任意の一文字を表すため。また、全角の `?’ は、文字通りクエッションマークとして認識され、デフォルトでは半角と全角を区別しないことにより、半角の `?’ も検索対象となるため。

「*」と「?」を検索する:Excel即効テクニック によると、

Excelでデータを検索するときに文字列の一部が分からなくても、ワイルドカードと呼ばれる特別な記号「*」と「?」を使って検索できるのはご存知の通り。「*」は任意の文字列を表し「?」は任意の1文字を表す。…

「*」と「?」を検索文字として指定するときは「~*」「~?」のように「~」を付けて入力すればよい

正規表現 – Wikipedia の書き方とは違うので気をつける必要がある。

 

2. LibreOffice で正規表現による検索

これに対して、LibreOffice では、正規表現で検索できる。

Writer/Using Wildcards in Text Searches/ja - LibreOffice Help によると、

  • 編集 → 検索と置換を選択します。
  • ダイアログを展開するには、詳細オプションをクリックします。
  • 正規表現チェックボックスを選択します。
  • 素直に書けるので、検索するときに間違えることはない。

  • 任意の 1 文字を表すワイルドカードは、ピリオド記号 (.) です。
  • 直前の文字の任意回数の繰り返し (ゼロ回を含む) を示すワイルドカードは、アスタリスク記号です。
  • LibreOffice の方がシンプルで好きだなぁ。

     

    3. SQL との比較

    ちなみに、SQL では、任意の一文字を表すのに `_’ を用いる。

    SQLの基礎「SELECT」文を覚えよう によると、

    (4) LIKE条件
    文字の検索条件を指定します。ここで、%と_(アンダースコア)は特殊な意味が割り当てられており、%は「任意の文字数の任意の文字」_は「1文字の任意の文字」を表します。

    Access は `?’, `_’ が任意の一文字を表す。

    あいまいな条件抽出 - LIKE演算子 : SQL入門講座 によると、

    アスタリスク (*)
    パーセント(%)

    0文字以上の任意の文字列を表す。

    疑問符(?)
    アンダスコア(_)

    任意の一文字を表す。

    普段から使ってないと、混乱する。 (+_+)