小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

Perlの変数名とSQLのワイルドカード

Perlの変数名は、ファニー文字($,@,%等)を除くと、英字または『_』で始まり、英文字、数字、『_』のみから構成されます。
一方、SQLの主なワイルドカードは、『%』と『_』です。


Perlロジック内で、SQL文の文字列編集をする時に、ワイルドカード『%』は変数名の直後に置いても問題ありません。
なぜなら、変数名には『%』が含まれることが仕様上ないからです。
ちなみに、先頭にはファニー文字『%』とかぶるのでNGです。


しかし、ワイルドカード『_』は、変数名の構成文字『_』とかぶるので問題があります。
なので、変数名の直後にワイルドカード『_』は置けないのです。


したがって、そのようなときは、変数のある文字列とワイルドカードのある文字列を連結して編集します。

ワイルドカード『%』

my $where = "aaa";
my $sql = "SELECT hoge FROM hogeTBL WHERE hoge LIKE '$where%'";

ワイルドカード『_』

my $where = "bbb";
my $sql = "SELECT hoge FROM hogeTBL WHERE hoge LIKE '$where" . "_'";