加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle SQL中的字符串比较

发布时间:2021-01-08 08:36:16 所属栏目:百科 来源:网络整理
导读:select * from employees where last_name between 'A' AND 'E'; 为什么回答“D”而不是“E”,是否还有其他方法可以获取详细信息 解决方法 where last_name between ‘A’ AND ‘E’; 字符串比较与比较数字不相似. 字符串比较是在其ASCII值上完成的.因此,

select * from employees
 where last_name between 'A' AND 'E';

为什么回答“D”而不是“E”,是否还有其他方法可以获取详细信息

解决方法

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.

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读