Char(20) = 'name' varchar2(20)='name' When comparing these two values, are the spaces padded in char are considered or not? Are both values equal?

Showing Answers 1 - 27 of 27 Answers

mala

  • Sep 26th, 2007
 

While comparing a char value to a Varchar spaces will be counted so your example fails

Regards
Mala

  Was this answer useful?  Yes

Spaces will pad, both value will be different, Use this procedure your doubt will be clear


create or
replace procedure test2
as
   x varchar(20):='sudhir';
   y char(20):='sudhir';

   begin
   if(x=y) then

     dbms_output
.put_line('both are equal');

   else
     dbms_output
.put_line('both are not equal');

   end

if;
end;

You can check it using the following procedure

create or replace procedure test as

v_name1  char(20) := 'name';
v_name2  varchar2(20) := 'name';

begin

if v_name1 = v_name2 then
dbms_output.put_line('Both the words are same');
else
dbms_output.put_line('Both the words are different');
end if;
end;


The output is
Both the words are different.

if rtrim(v_name1) = v_name2 then

if you use rtrim for char data it will diplay the message
two words are same.

This is because
Char is a fixed length datatype and values are padded with blank spaces to match specified length.
Varchar2 is variable length datatype.

mosam

  • May 20th, 2008
 

ans is both values are not equal  char(20)='name' covered in memorey areea is 20 but varchar2(20)='name' covered in memorey areea is 4 becoze char is fixed lenth char data type but varchar2 is variable lenth char data type

  Was this answer useful?  Yes

javedans

  • Jul 8th, 2009
 

Spaces will be padded with y variable,its means y will store y='sudhir              ' . while x only store 6 six character so both string will not be equal

create or replace procedure test2 as
   x varchar(20):='sudhir'
;
   y char(20):='sudhir';

   begin
   if(x=y) then

     dbms_output.put_line('both are equal');
   else
     dbms_output.put_line('both are not equal');
   end
if;
end;

  Was this answer useful?  Yes

chinnu

  • Jan 27th, 2015
 

char datatype is fixed,but it cant be reused. eq: char(10) -- elena,first 5 characters will be filled remaining field are padded.
varchar2 datatype fixed,but it can be reused. eq: varchar2(10) -- elena, first 5 characters will be filled and remaining fields are reused.

  Was this answer useful?  Yes

suvijyo

  • Feb 2nd, 2015
 

Code
  1. declare

  2.         s1 char(10):=name;

  3.         s2 varchar2(10):=name;

  4. begin

  5.         if s1=s2 then

  6.                 dbms_output.put_line(both are equal);

  7.         else

  8.                 dbms_output.put_line(both are equal);

  9.         end if;

  10.         dbms_output.put_line(s1:=||s1||-length:=||length(s1));

  11.         dbms_output.put_line(s2:=||s2||-length:=||length(s2));

  12. end;

  13. /

  Was this answer useful?  Yes

Give your answer:

If you think the above answer is not correct, Please select a reason and add your answer below.

 

Related Answered Questions

 

Related Open Questions