oracle 字符串中单引号,oracle字符串中包含单引号

1.关于在字符串中包含单引号    字符串是引用字符串的,如果字符串本身就包含单引号怎么办?

用2个单引号表示或者以q或Q开头,然后后面是字符串,字符串的第1个字符和最后结束的字符是分割符号,中间的引号随便写,如果开始是[,,),}.但是开始如果是],>,),}那么结束要和开始相同,其他的符号,+,|,或字母a,A,等,开始和结束相同,包括大小写。

例子如下:

SQL> select 'you are'' beautiful' from dual;

'YOUARE''BEAUTIFUL

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

you are' beautiful

select q'[you are' beautiful]' from dual;

Q'[YOUARE'BEAUTIFU

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

you are' beautiful

SQL> select q'+it's a cat+' from dual

2  /

Q'+IT'SACAT+'

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

it's a cat

SQL> select Q'Ait's a cata' from dual

2  /

select Q'Ait's a cata' from dual

ORA-01756: 引号内的字符串没有正确结束

2.where子句中不能使用别名    在where字句中是不能使用别名的,但在order by 字句中是可以使用的,如下

SQL> select employee_id,last_name,job_id,department_id

2  from employees

3  where department_id=90;

EMPLOYEE_ID     LAST_NAME    JOB_ID     DEPARTMENT_ID

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

100                 King                   AD_PRES                 90

101                Kochhar              AD_VP                      90

102                De Haan              AD_VP                    90

SQL> select employee_id,last_name,job_id,department_id dd

2  from employees where  dd=90;

from employees where  dd=90

*

ERROR at line 2:

ORA-00904: "DD": invalid identifier

order by 自己可以用别名

SQL> select employee_id,last_name,salary*12 annsal from employees

2  order by annsal;

EMPLOYEE_ID LAST_NAME           ANNSAL

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

132            Olson                             25200

136            Philtanker                     26400

128             Markle                         26400

127             Landry                         28800

135             Gee                             28800

191             Perkins                       30000

119             Colmenares               30000

140             Patel                           30000

144             Vargas                        30000

182             Sullivan                       30000

131             Marlow                        30000

为什么呢?因为select语句有个执行顺序,where子句是在select之前进行处理的,而order by字句是在select之后处理。列的别名是在select时生成,所以where字句根本看不到别名,故无法引用,order by 字句则可以。

3.关于NULL值    NULL is a value that is unavaiable,unassigned,unknown or inapplicable.在算术表达式中有NULL值,则结果为NULL值;在字符串的表达式中,则保持原有的字符串。

NULL值在排序中:在升序中NULL值放在最后,在降序中放在开始,即放在最大的位置,可以改变位置,在语句末尾加上nulls first或者nulls last.

select语句默认为升序排列,以department_id排序NULL在最后位置

SQL> select  last_name, department_id from employees order by department_id;

LAST_NAME                 DEPARTMENT_ID

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

Greenberg                            100

Sciarra                                  100

Urman                                   100

Popp                                     100

Faviet                                    100

Gietz                                      110

Higgins                                  110

Grant

以降序排列,NULL在第一个位置

SQL> select  last_name, department_id from employees order by department_id desc;

LAST_NAME                 DEPARTMENT_ID

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

Grant

Higgins                                  110

Gietz                                    110

Urman                                  100

Faviet                                  100

Chen                                   100

Popp                                    100

Greenberg                           100

Sciarra                                 100

De Haan                               90

Kochhar                               90

在末尾加上nulls last改变了NULL值的位置

SQL> select  last_name, department_id from employees order by department_id desc  nulls last;

LAST_NAME                 DEPARTMENT_ID

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

Himuro                               30

Tobias                               30

Raphaely                             30

Baida                                30

Fay                                  20

Hartstein                            20

Whalen                               10

Grant

http://oracle.chinaitlab.com/induction/934410.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值