Perl获取Oracle数据乱码,perl oracle utf-8 結果匹配中文字符

该脚本使用Perl语言连接Oracle数据库,执行SQL查询获取包含'工資'字段的数据,并将结果发送到指定邮箱。查询内容包括计算FORMMAIN_1530表中特定条件的记录数,并筛选出包含'太原'的字段值。
摘要由CSDN通过智能技术生成

[oracle@oadb sbin]$ cat s1.pl

#!/usr/bin/perl

use DBI;

use Encode;

use HTTP::Date qw(time2iso str2time time2iso time2isoz);

use Net::SMTP;

sub send_mail{

if (@_ != 2){print "請輸入2個參數\n";exit 1};

($m,$n) = @_; #將參數賦值給變量

my $to_address = $m;

my $CurrTime = time2iso(time());

my $to_address = $m;

my $from = "From: $mail_user\n";

my $subject = "Subject: zjcap info\n";

my $info = "$CurrTime--$n";

my $message = <

$info

CONTENT

my $smtp = Net::SMTP->new($mail_server);

$smtp->auth($mail_user, $mail_pwd) || die "Auth Error! $!";

$smtp->mail($mail_user);

$smtp->to($to_address);

$smtp->data(); # begin the data

$smtp->datasend($from); # set user

$smtp->datasend($subject); # set subject

$smtp->datasend("\n\n");

$smtp->datasend("$message\n"); # set content

$smtp->dataend();

$smtp->quit();

}

my $dbName = 'oadb';

my $dbUser = 'query';

my $dbUserPass = 'kx';

my $dbh = DBI->connect("dbi:Oracle:$dbName", $dbUser, $dbUserPass) or die "can't connect to database ";

my $sql = "select count(*) from VXSPACE.FORMMAIN_1530";

my $sth = $dbh->prepare($sql);

$sth->execute();

my $var = $sth->fetchrow_array();

print "開始處理\n";

my $sql = "select field0001 from (select * from vxspace.FORMMAIN_1530 a where a.field0001 like '%工資%' order by 4 desc) where rownum <20";

my $sth = $dbh->prepare($sql);

$sth->execute();

while (my @arr=( $sth->fetchrow_array())){

foreach (@arr){

push (@arr2,encode_utf8($_));

};

};

foreach (@arr2){if ($_=~/太原/){print $_."\n"}};

[oracle@oadb sbin]$ perl s1.pl

開始處理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值