SQL
 Computer >> コンピューター >  >> プログラミング >> SQL

SQLのCONTAINS関数の使い方を徹底解説!基本構文からLIKE句との違いまで

データベースから有用な情報を取得・分析するためのSQL文や関数は数多く存在します。その中の一つがCONTAINS()関数です。この関数は標準SQLの機能ではなく、使用するデータベースによって動作が異なるという特徴を持っています。本記事では、SQL ServerにおけるCONTAINS()関数の使い方を中心に解説し、他のデータベースを使用する場合との違いについても触れていきます。

基本的な使い方と構文

CONTAINS()関数は、ある部分文字列を受け取り、それが別の文字列内に存在するかどうかを検索するための関数です。Microsoft SQL Serverでは、CONTAINS()を使用することで、テーブルに対して全文検索によるパターンマッチングを行う検索クエリを実行できます。戻り値はブール値で、条件が真(true)か偽(false)かを示します。

SELECT <columnName> FROM <yourTable> WHERE CONTAINS (<columnName>, '<yourSubstring>');

<>で囲まれた部分は、それぞれ自分の環境に合わせた名前に置き換えてください。検索したい部分文字列は引用符(クォート)で囲む必要があります。カラム名には、テーブル作成時に定義した名前を指定します。

CREATE TABLE MyTable
    ([name] varchar(26), [occupation] varchar(57))
;

INSERT INTO MyTable
    ([name], [occupation])
VALUES
    ('User 1', 'Web Developer'),
    ('User 2', 'Musician'),
    ('User 3', 'Doctor')
;

SELECT name, occupation FROM myTable WHERE CONTAINS (name, 'User');

上記のクエリを実行するには、対象のテーブルが全文インデックス(フルテキストインデックス)として設定されている必要があります。この検索では、指定した部分文字列のパターン全体と一致するレコードを探します。誤字や類義語は検索対象にならない点に注意しましょう。

全文インデックスが使えない場合の代替手段:LIKE句

全文インデックスの設定方法がわからない場合は、SQLのLIKE句を使う方法もあります。LIKE句はCONTAINSと似た働きをしますが、事前設定なしですぐに使えるのが大きな利点です。

SELECT
  name,
  occupation
FROM
  MyTable
WHERE name LIKE 'User%';

'User'の後ろにある「%」はワイルドカードと呼ばれる記号で、「User」以降の任意の文字列を意味します。したがって、このコードは以下のような結果を返します。

nameoccupation
User 1Web Developer
User 2Musician
User 3Doctor

データベースごとの違いに注意

CONTAINS関数は、データベース製品ごとに使い方が異なります。例えば、SQL ServerにおけるCONTAINSの意味と、PostgreSQLにおける意味は必ずしも同じではありません。

より詳しい情報については、お使いのデータベースの公式ドキュメントをご確認ください。また、LIKE句についてさらに学びたい方は、Career KarmaのJames Gallagherによる解説記事も参考になるでしょう。

  1. Linuxのxargsコマンドを使いこなす!基本から実践的な活用例まで解説

    ターミナル作業において、経験豊富なユーザーほど「より賢く、より楽に」仕事をこなす方法を常に探しています。xargsは、2つのコマンドをつなぐ架け橋として機能する便利なコマンドで、片方のコマンドの出力を読み取り、その項目を使ってもう片方のコマンドを実行します。パターン検索やファイルの削除・リネームなど、さまざまなシーンで活躍します。本記事では、xargsコマンドを効果的に活用する方法を詳しく解説します。 xargsとは? 基本的な動作として、xargsは標準入力(STDIN)から情報を受け取り、読み込んだ項目に対して1回または複数回コマンドを実行します。シンプルな例は数多くありますが、まず一

  2. Linuxのteeコマンド使い方ガイド|画面表示とファイル保存を同時に実現

    Linuxシェルでパイプやリダイレクトを使っているなら、teeコマンドの出番もきっとあるはずです。teeは「標準出力に表示しながら、同時にファイルにも書き込む」ことができる便利なユーティリティです。この記事では、teeコマンドの基本操作から、sudoとの組み合わせ、追記モード、エラー出力の扱い方まで、実例を交えながら詳しく解説します。 teeコマンドとは何をするもの? まず、次のようなコマンドを見てみましょう。 ls このコマンドは、現在のディレクトリの内容を表示します。つまり、標準出力(stdout)へ出力するわけです。標準出力とは通常、画面、正確には仮想端末のディスプレイのことです