金仓数据库KingbaseES PLSQL比较运算符
关键字:
like、between、人大金仓、KingbaseES
PLSQL比较运算符简介
比较运算符是PL/SQL语言的基本元素之一,它们被用于比较两个变量或表达式的值。在PL/SQL中,比较运算符是十分常见的,因此,熟练地运用它们能提高代码的开发效率。
PL/SQL中提供了五种比较运算符,包括:
- IS [NOT] NULL运算符
- 关系运算符
- LIKE运算符
- BETWEEN运算符
- IN运算符
PLSQL比较运算符使用示例
2.1 IS [NOT] NULL运算符
IS NULL运算符用于判断参数值是否为空,我们可以使用IF value IS NULL来对value的值进行判断,如果其值为NULL,则返回布尔值TRUE;如果不为NULL,则返回FALSE。IS NOT NULL运算符的作用正好相反。
下面给出一个例子判断value的值,如果value为null,则函数返回1,如果不为空,则函数返回2:
\set SQLTERM /
create or replace function func1() returns int as
declare
value int:=null;
begin
if value IS NULL then
return 1;
end if;
if value is not null then
return 2;
end if;
return 3;
end;
/
\set SQLTERM ;
select func1();
drop function func1;
执行结果:
func1
-------
1
(1 row)
2.2 关系运算符
关系运算符也可以叫做比较运算符,PLSQL提供了六种关系运算符:=、!=(<>,或^=)、<、>、<=、>=。这些运算符可以用在各种数据类型上,包括数字,字符,日期等类型。下面是一个示例,使用show_boolean过程来打印使用关系运算符比较算术值的表达式的值:
\set SQLTERM /
create or replace procedure show_boolean(a boolean) as
begin
if a then
raise notice 'true';
else
raise notice 'false';
end if;
end;
/
\set SQLTERM ;
\set SQLTERM /
BEGIN
show_boolean (1 + 1 = 2);
show_boolean (1 + 1 <> 2);
show_boolean (1 + 1 != 2);
show_boolean (1 + 1 ^= 2);
show_boolean (2 < 4);
show_boolean (2 > 4);
show_boolean (2 > 4);
show_boolean (2 >= 2);
END;
/
执行结果:
NOTICE: true
NOTICE: false
NOTICE: false
NOTICE: false
NOTICE: true
NOTICE: false
NOTICE: false
NOTICE: true
2.3 LIKE运算符
LIKE运算符用于在字符数据类型中进行模糊匹配。例如,我们可以使用%来匹配任意字符,使用_来匹配单个字符,下面是一个示例,字符串“Student”与模式“S%u__n”匹配,但与“S%U_N”不匹配:
\set SQLTERM /
DECLARE
PROCEDURE string_match (
value VARCHAR2,
pattern VARCHAR2
) IS
BEGIN
IF value LIKE pattern THEN
RAISE NOTICE 'TRUE';
ELSE
RAISE NOTICE 'FALSE';
END IF;
END;
BEGIN
string_match('Stduent', 'S%u__t');
string_match('Stduent', 'S%U__N');
END;
/
执行结果:
NOTICE: TRUE
NOTICE: FALSE
2.4 BETWEEN运算符
BETWEEN运算符用于检查一个值是否在两个指定的范围之内。下面是一个示例,判断age是不是在18到30之内。
\set SQLTERM /
declare
age number:=20;
begin
if age between 18 and 30 then
raise notice 'age is between 18 and 30';
end if;
end;
/
执行结果:
NOTICE: age is between 18 and 30
2.5 IN运算符
IN运算符用于检查一个值是否在一个指定的集合范围内,下面是一个示例,用于检测年龄是否在指定的集合范围:
\set SQLTERM /
declare
age number:=20;
begin
if age in(18,20,25) then
raise notice 'age is 18,20 or 25';
end if;
end;
/
执行结果:
NOTICE: age is 18,20 or 25