Oracle SQL中的字符串比较
发布时间:2021-01-08 09:37:41 所属栏目:站长百科 来源:网络整理
导读: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”,是否还有其他方法可以获取详细信息 解决方法
字符串比较与比较数字不相似. 字符串比较是在其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. (编辑:ASP站长) 【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。 |
相关内容
未处理完善
-
无相关信息
最新更新


