はじめに

SQLでLONG VARCHAR型の列にLIKE検索する方法をご紹介します。

LONG VARCHAR型の列に、通常のLIKE検索を行うと下記エラーが表示され検索することができません。
(例)
dbadmin=> select count(*) from tbl1 where col1 like ‘%A%’;
ERROR 4286: Operator does not exist: long varchar ~~ unknown
HINT: No operator matches the given name and argument type(s). You may need to add explicit type casts

LONG VARCHAR型の列にLIKE検索する方法

LONG VARCHAR型にREGEXP_LIKE関数を使用してLIKE検索することができます。

REGEXP_LIKEの構文は以下になります。
[REGEXP_LIKEの構文]
REGEXP_LIKE(<列名>,<検索文字列>)

[例]
REGEXP_LIKE(COL1,’A’)

※LONG VARCHAR型とVARCHAR型の列サイズに関しては下記URLを参照ください。
http://vertica-tech.ashisuto.co.jp/data-types/

実行例

REGEXP_LIKE関数を使用してLIKE検索する方法

■tbl1表に65,010バイトのデータ格納されています。
・1~65,000バイトまで”A”が格納されています。
・65,000~65,010バイトまで”B”が格納されています。


■”A”が含まれるデータをREGEXP_LIKE関数で検索することができます。


■”B”が含まれるデータをREGEXP_LIKE関数で検索することができます。


その他

LONG VARCHAR型の列に65,000バイト以下のデータしか格納されていない場合は、VARCHAR型にキャストすることでLIKE検索することができます。

LONG VARCHAR型をVARCHAR型にキャストする構文は以下になります。
[キャストの構文]
<列名>::<データ型>

[例]
COL1::VARCHAR

実行例

■”A”が含まれるデータをLIKEで検索することができます。



検証バージョンについて

この記事の内容はVertica 9.0で確認しています。