oracle语句比较符,Oracle SQL中的字符串比较

where last_name between ‘A’ AND ‘E’;

字符串比较与比较数字不相似.

字符串比较是在其ASCII值上完成的.因此,您将last_name的ASCII值与单个字符进行比较,这将不会提供您想要的输出.

SQL> SELECT ename, ASCII(ename), ASCII('A'), ASCII('E') FROM emp;

ENAME ASCII(ENAME) ASCII('A') ASCII('E')

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

SMITH 83 65 69

ALLEN 65 65 69

WARD 87 65 69

JONES 74 65 69

MARTIN 77 65 69

BLAKE 66 65 69

CLARK 67 65 69

SCOTT 83 65 69

KING 75 65 69

TURNER 84 65 69

ADAMS 65 65 69

JAMES 74 65 69

FORD 70 65 69

MILLER 77 65 69

14 rows selected.

SQL>

基于以上ASCII值,您将只获得那些您具有介于65和69之间的ename的ASCII值的行.

您需要使用SUBSTR首先提取last_name的第一个字符,并将其与“A”和“E”进行比较.

例如,我在SCOTT模式中使用标准emp表,并添加两行,其中ename以“D”和“E”开头.

SQL> WITH DATA AS(

2 SELECT ename FROM emp

3 UNION

4 SELECT 'DAWSON' FROM DUAL

5 UNION

6 SELECT 'EINSTEIN' FROM DUAL

7 )

8 SELECT * FROM DATA

9 WHERE substr(ename,1,1) BETWEEN 'A' AND 'E';

ENAME

----------

ADAMS

ALLEN

BLAKE

CLARK

DAWSON

EINSTEIN

6 rows selected.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值