Похоже, вы не можете сделать это с текущей версией DBD::CSV
.
Вы используете DBD::CSV
модуль для доступа к данным. Он использует SQL::Statement
модуль для обработки выражений. Я искал его исходный код и обнаружил, что следующий код обрабатывает условие LIKE
sql:
## from SQL::Statement::Operation::Regexp::right method
unless ( defined( $self->{PATTERNS}->{$right} ) )
{
$self->{PATTERNS}->{$right} = $right;
## looks like it doen't check any escape symbols
$self->{PATTERNS}->{$right} =~ s/%/.*/g;
$self->{PATTERNS}->{$right} = $self->regexp( $self->{PATTERNS}->{$right} );
}
Посмотрите на $self->{PATTERNS}->{$right} =~ s/%/.*/g;
строку. Он преобразует шаблон LIKE
в регулярное выражение. И это не делает никакой проверки любых escape-символов. Все символы %
переводятся вслепую в шаблон .*
. Вот почему я думаю, что он еще не реализован.
Ну, может быть, кто-нибудь найдет время, чтобы решить эту проблему.