<?xml version="1.0" encoding="windows-1252"?>
<node id="1013380" title="Extracting only required length in a column in perl DBI" created="2013-01-15 07:30:52" updated="2013-01-15 07:30:52">
<type id="115">
perlquestion</type>
<author id="991260">
Thomas Kennll</author>
<data>
<field name="doctext">
Hi All, 

I'm trying to connect to an oracle DB and extract 3 columns from, I need to extract only 1st 3 characters in each column. I used unpack. But, its not working.. Can someone help.. My code is as below.. 

&lt;code&gt;
#!/usr/bin/perl
#use strict;

use DBI;

my $user = "qwer";
my $passwd = "qwer";
my $server = "asdf";
my $database='rd_db';
my $dbd='Sybase';
my $an_dt_file = "an_dt_file";

# Connect to the database

my $dbh = DBI-&gt;connect($server,$user,$passwd,$dbd, {RaiseError =&gt; 1,AutoCommit =&gt; 1 });
# Prepare the SQL query for execution
my $sql = "SELECT $ans_rid, $ans_qcn, $ans_loc FROM ft_int_tbl WHERE $ans_rid is not null";
my $sth = $dbh-&gt;prepare($sql) or die "Couldn't prepare statement:$DBI::errstr; stopped";

# Execute the query
$sth-&gt;execute() or die "Couldn't execute statement: $DBI::errstr; stopped";
#open JKLL, "&gt;$an_dt_file" or die "can't open file $ansb_detail_file for write,\n";

# Fetch each row and print it
while ( my ($ans_rid, $ans_qcn, $ans_loc) = $sth-&gt;fetchrow_array() ) {
my ($ansb_cktid, $ansb_mcn, $ansb_soc) = unpack("A3 A3 A3", $_);
#print JKLL"Field 1: $ansb_cktid Field 2:$ansb_mcn Field 3: $ansb_soc \n";
print "Field 1: $ansb_cktid Field 2:$ansb_mcn Field 3: $ansb_soc \n";

}

# Disconnect from the database
$dbh-&gt;disconnect();
&lt;/code&gt;</field>
</data>
</node>
