百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 数据库教程 > 正文

SQL之WHERE子句中常用的运算符(在sql的where子句中,可以使用的运算符)

oygpt 2024-09-23 12:09 113 浏览 0 评论

【四】WHERE子句中常用的运算符

4.1 运算符及优先级:

算数运算符

*,/,+,-,

逻辑运算符

not, and ,or 可以通过()改变运算优先级

比较运算符

1)单值比较运算 =, >, >=, <, <=, <>,between and

2)多值比较运算 >any, >all, <any, <all, in, not in

3)模糊比较 like(配合“%”和“_”)

4)特殊比较 is null

SQL>select ename, job, sal ,comm from emp where job='SALESMAN' OR job='PRESIDENT' AND sal> 1500;

注意:条件子句使用比较运算符比较两个选项,重要的是要理解这两个选项的数据类型。必须得一致,所以这里常用显性转换。

数值型、日期型、字符型都可以与同类型比较大小,但数值和日期比的是数值的大小,而字符比的是acsii码的大小

试比较下面语句,结果为什么不同

SQL> select * from emp where hiredate>to_date('1981-02-21','yyyy-mm-dd');

SQL> select * from emp where to_char(hiredate,'dd-mon-rr')>'21-feb-81';

4.2 常用谓词

4.2.1 用BETWEEN AND操作符来查询出在某一范围内的行.

SQL> SELECT ename, sal FROM emp WHERE sal BETWEEN 1000 AND 1500;

between 低值 and 高值,包括低值和高值。

4.2.2 模糊查询及其通配符:

在where子句中使用like谓词,常使用特殊符号"%"或"_"匹配查找内容,也可使用escape可以取消特殊符号的作用。

SQL>

create table test (name char(10));

insert into test values ('sFdL');

insert into test values ('AEdLHH');

insert into test values ('A%dMH');

commit;

SQL> select * from test;

NAME

----------

sFdL

AEdLHH

A%dMH

SQL> select * from test where name like 'A\%%' escape '\';

NAME

----------

A%dMH

4.2.3' '和" "的用法:

单引号的转义:连续两个单引号表示转义.

' '内表示字符或日期数据类型,而" " 一般用于别名中有大小写、保留字、空格等场合,引用recyclebin中的《表名》也需要" ".

SQL> select empno||' is Scott''s empno' from emp where empno=7788;

EMPNO||'ISSCOTT''SEMPNO'

--------------------------------------------------------

7788 is Scott's empno

4.2.4 交互输入变量符&和&&的用途:

①使用&交互输入

SQL> select empno,ename from emp where empno=&empnumber;

输入 empnumber 的值: 7788

&后面是字符型的,注意单引号问题,可以有两种写法:

SQL> select empno,ename from emp where ename='&emp_name';

输入 emp_name 的值: SCOTT

SQL> select empno,ename from emp where ename=&emp_name;

输入 emp_name 的值: 'SCOTT'

②使用&&可以在当前session下将&保存为变量

作用是使后面的相同的&不再提问,自动取代。

SQL> select empno,ename,&&salary from emp where deptno=10 order by &salary;

输入 salary 的值: sal

&&salary的意思就是把salary的值在当前session存储,使用define可以查看salary变量,如果想删除使用undefine salary。

&&salary和&的提示是按所在位置从左至右边扫描,&&salary写在左边(首位),&salary(第二位)

③define(定义变量)和undefine命令(解除变量)

SQL> define --显示当前已经定义的变量(包括默认值)

set define on|off可以打开和关闭&。

SQL> define emp_num=7788 --定义变量emp_num

SQL>select empno,ename,sal from emp where empno=&emp_num;

SQL>undefine emp_num --取消变量

如果不想显示“原值”和“新值”的提示,可以使用set verify on|off命令

④Accept接收一个变量

类似define功能,但通常和&配合使用

SQL> accept lowdate prompt 'Please enter the low date range ("MM/DD/YYYY"):';

SQL> accept highdate prompt 'Please enter the highdate range ("MM/DD/YYYY"):';

SQL> select ename||','||job as EMPLOYEES, hiredate from emp

where hiredate between to_date('&lowdate','MM/DD/YYYY') and to_date('&highdate','MM/DD/YYYY');

4.2.5 使用逻辑操作符: AND; OR; NOT

AND 两个条件都为TRUE ,则返回TRUE

SQL> SELECT empno,ename,job,sal FROM emp WHERE sal>=1100 AND job='CLERK';

OR 两个条件中任何一个为TRUE,则返回TRUE

SQL> SELECT empno,ename,job,sal FROM emp WHERE sal>=1100 OR job='CLERK';

NOT 如果条件为FALSE,返回TRUE

SQL> SELECT ename,job FROM emp WHERE job NOT IN ('CLERK','MANAGER','ANALYST');

4.2.6什么是伪列

简单理解它是表中的列,但不是你创建的。Oracle数据库有两个著名的伪列rowid和rownum

ROWID的含义:rowid 可以说是物理存在的,表示记录在表空间中的唯一位置ID,所以表的每一行都有一个独一无二的物理门牌号。

ROWNUM的含义:rownum是对结果集增加的一个伪列,即先查到结果集,当输出时才加上去的一个编号。rownum必须包含1才有值输出。

小伙伴们,一起来试试:

SQL> select rowid,rownum,ename from emp;

SQL> select * from emp where rowid='AAARZ+AAEAAAAG0AAH';

SQL> select * from emp where rownum<=3;


the end !!!

@jackman 共筑美好!

相关推荐

PLSQL 命令行模式常见错误(plsql执行命令行)

日常运维过程中,经常使用PLSQL的command模式运行SQL脚本,对于一些常见的错误,你知道原因在哪里吗?1.SQL脚本执行后弹出输入框原因:SQL*PLUS默认环境里会把'&字符'...

了解 PL/SQL 的异常处理(sql数据库异常处理)

6.PL/SQL的异常处理在程序运行时出现的镇误,称为异常。发生异常后语句将停止执行,PL/SQL引擎立即将控制权转到PL/SQL块的异常处理部分。异常处理机制简化了代码中的错误检测。PL/SQ...

PL/SQL 泛型编程详解(泛型调用)

PL/SQL中的通用函数,也称为泛型函数,是一种可以接受任意数据类型参数的函数。这使得开发者能够编写可重用的代码,以处理不同的数据类型,而无需为每种数据类型编写专门的函数。PL/SQL的泛型函数通过使...

PL/pgSQL编写postgresql函数之基本语句

目录基本语句1赋值赋值运算符:=或=2单一行结果返回SELECT...INTO语法赋值更新操作结果返回3多行结果返回方式一:使用表充当容器方式二:使用自定义TYPE充当容器方式三:ret...

PLSQL安装教程(plsql安装教程及配置)

2.安装,双击上图Plsqldev.exe文件;3.单击确定,进行下一步安装;4.软件询问是否遵守协议,单击“IAgree”,进行下一步安装;5.选择软件安装在计算机中的路径,(客户端的安装...

PL/SQL字符函数概览(sqlplus 字符集)

PL/SQL提供了一系列内置的字符函数,这些函数可以对字符串进行各种操作,如转换、比较、搜索和替换等。以下是一些常用的PL/SQL字符函数及其用法示例:CONCAT:连接两个或多个字符串。示例:DEC...

instantclient + PLSQL安装与配置小结

一、软件1、instantclient-basic-windows.x64-11.2.0.4.0.zip到官网下载。2、PLSQLDeveloper13.rar到网上下载,找破解版的,网上有V...

如何使用 PL/SQL 块 ?(pl/sql 使用教程)

2.PL/SQL块PL/SQL是一种块结构的诺言,一个PL/SQL程序包含了一个或者多个逻辑块,逻辑块中可以声明变量,变量在使用之前必须先声明。除了正常的执行程序外,PL/SQL还提供了专门的异...

PL/SQL(Procedural Language(procedural objects)

PL/SQL(ProceduralLanguage/StructuredQueryLanguage)是由OracleCorporation开发的一种用于与Oracle数据库配合使用的编...

Oracle数据库扩展语言PL/SQL之块结构

【本文详细介绍了Oracle数据库扩展语言PL/SQL的块结构,欢迎读者朋友们阅读、转发和收藏!】1基本概念1.1PL/SQL块结构块(block)是PL/SQL的基本程序单元,编写P...

记一次生产数据库sql优化案例--with用法改写(11分钟优化到7秒)

概述前段时间开发丢了一个超长的sql给我,说需要优化,因为太长,连PL/SQL的美化工具都美化不了...下面简单记录一下优化的过程。with改写WITHAS短语,也叫做子查询部分(subquery...

如何在生产库与测试库做数据结构对比--PL/SQL工具

概述领导要求做个数据库之间的数据结构对比,这里我简单用PL/SQL工具来实现,下面介绍下使用过程。功能PLSQLDeveloperTools菜单下有CompareUserObjects和Com...

PLSQL使用教程——(1)基本使用教程

一、登录1、在这里配置好数据库服务,之后就可以登录了2、输入用户名和密码,并选择之前配置好的数据库服务。我这服务名取为localhost。(这个名字随意起。)二、创建表空间1、在SQL窗口中执行以下S...

PL/SQL调试存储过程?看这篇就够了

概述虽然现在存储过程相对比较少用了,但是平时接触不可避免的要跟存储过程打交道,当需要自己写的时候总会碰到这或那的错误,这个时候一般要怎么调试呢?PL/SQL调试PL/SQL中提供了【调试存储过程】的功...

IT运维基础篇之oracle sqlldr数据批量导入,比plsqldev还简单

在oralce中导入数据的方式有很多,比如:PL/SQL文本导入器、对表forupdate之后直接复制粘贴等等,导入方式有很多,今天我们介绍另一种大批量数据导入方式:sqlldr,具体其用法可以上网查...

取消回复欢迎 发表评论: