ddsdjn 发表于 2018-9-13 07:58:15

oracle字符串中包含单引号

  1.关于在字符串中包含单引号
  字符串是引用字符串的,如果字符串本身就包含单引号怎么办?
  用2个单引号表示或者以q或Q开头,然后后面是字符串,字符串的第1个字符和最后结束的字符是分割符号,中间的引号随便写,如果开始是[,,),}.但是开始如果是],>,),}那么结束要和开始相同,其他的符号,+,|,或字母a,A,等,开始和结束相同,包括大小写。
  例子如下:
  SQL> select 'you are'' beautiful' from dual;
  'YOUARE''BEAUTIFUL
  ------------------
  you are' beautiful
select q'' 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
  2from employees
  3where 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
  2from employees wheredd=90;
  from employees wheredd=90
  *
  ERROR at line 2:

  ORA-00904: "DD": invalid>  order by 自己可以用别名
  SQL> select employee_id,last_name,salary*12 annsal from employees
  2order 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> selectlast_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> selectlast_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> selectlast_name, department_id from employees order by department_id descnulls 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


页: [1]
查看完整版本: oracle字符串中包含单引号