Oracle PL / SQL CHAR VARCHAR2

CHAR数据类型存储固定长度的字符串。

VARCHAR2数据类型存储可变长度字符串。

所有字符串文字的数据类型为CHAR。

用于指定CHAR或VARCHAR2数据项的语法是:

[ CHAR | VARCHAR2 ] [( maximum_size [ CHAR | BYTE ] )] 

例如:

CHAR 
VARCHAR2 
CHAR(10 CHAR) 
VARCHAR2(32 BYTE) 

maximum_size必须是1..32767范围内的整数字面值。

默认值为1。

 

比较字符值

在下面的例子中展示了如何比较两个VARCHAR2的值。

DECLARE 
  last_name1 VARCHAR2(10) := 'HTML'; 
  last_name2 VARCHAR2(10) := 'HTML5'; 
BEGIN 
  IF last_name1 > last_name2 THEN 
    DBMS_OUTPUT.PUT_LINE (last_name1 || ' is greater than ' || last_name2); 
  ELSE 
    DBMS_OUTPUT.PUT_LINE (last_name2 || ' is greater than ' || last_name1 ); 
  END IF; 
END; 
/ 

 

注意

如果两个值都是CHAR,则PL / SQL在将它们比较之前,将较短的值填充为较长值的长度。

如果任一值为VARCHAR2,PL / SQL在比较它们之前不调整它们的长度。

DECLARE 
  last_name1 CHAR(5)  := 'HELLO';     -- no trailing blanks 
  last_name2 CHAR(10) := 'HELLO   ';  -- trailing blanks 
BEGIN 
 IF last_name1 = last_name2 THEN 
   DBMS_OUTPUT.PUT_LINE (last_name1 || ' is equal to ' || last_name2); 
 ELSE 
   DBMS_OUTPUT.PUT_LINE (last_name2 || ' is not equal to ' || last_name1); 
 END IF; 
END; 
/ 

 

比较两个VARCHAR2值

比较两个VARCHAR2值

DECLARE 
  last_name1 VARCHAR2(10) := 'HELLO';     -- no trailing blanks 
  last_name2 VARCHAR2(10) := 'HELLO   ';  -- trailing blanks 
BEGIN 
  IF last_name1 = last_name2 THEN 
    DBMS_OUTPUT.PUT_LINE (last_name1 || ' is equal to ' || last_name2 ); 
  ELSE 
    DBMS_OUTPUT.PUT_LINE (last_name2 || ' is not equal to ' || last_name1); 
  END IF; 
END; 
/ 

 

实例2

比较CHAR值和VARCHAR2值

DECLARE 
  last_name1 VARCHAR2(10) := 'HELLO'; 
  last_name2 CHAR(10)     := 'HELLO';  -- PL/SQL blank-pads value 
BEGIN 
  IF last_name1 = last_name2 THEN 
    DBMS_OUTPUT.PUT_LINE (last_name1 || ' is equal to ' || last_name2); 
  ELSE 
    DBMS_OUTPUT.PUT_LINE (last_name2 || ' is not equal to ' || last_name1 ); 
  END IF; 
END; 
/