- 情景一:连接情况下,
||' '||
可以添加我们要表示的字符和文字,但是如果字符是单引号又该怎么表示
解决方法:用两个单引号表示单引号。
如:select ename||”’s employee salary is ‘||sal emp_sal from emp1;
上面语句的第2 3个单引号,表示的就是字符’本身
结果显示确实含有单引号,成功。
- 情景二:在语句 LIKE 中,怎么表示%和_
正如我们知道的,语句
如SQL>SELECT ENAME ,JOB FROM EMP1 WHERE JOB LIKE 'S%';
会将JOB以字母 S 开头的员工信息全部列出
但是当员工的JOB含有% _ (如下)又怎么解决呢?
ENAME JOB
-------------------- --------------------
MENG SALER
JOHN SALE%_MAN
JAN SALE%_/_MAN
ELLEN CLERK
JACK CLERK
MARK MANAGER
SMITH MANAGER
解决方法:采用转义字符,
SQL> SELECT ENAME ,JOB FROM EMP1 WHERE JOB LIKE 'SALE\%%' escape '\';
结果:
ENAME JOB
-------------------- --------------------
JOHN SALE%_MAN
JAN SALE%_/_MAN
语句 SELECT ENAME ,JOB FROM EMP1 WHERE JOB LIKE 'SALE\%%' escape '\';
前一个 \% 表示转义字符,即该百分号就是字符串中的普通字符%,而不是修饰符了,后一个%
仍然是修饰符%,表示后面还有多个字符。关键是要在后面加 escape '\',当然反斜杠\也可以换成其他字符,只要前后一致即可。不过反斜杠比较常用。
下划线_同理,用转义字符。
在sqlplus环境下,怎么偷懒,少敲代码?
- 第一步:
可以查看缓冲区,查看上一条输入的语句:L
例如:
SQL> L
1 SELECT ENAME ,JOB ,SAL FROM EMP1
2* WHERRE ENAME='MENG'
在第二行出现的*表示该行为当前行,想要将当前行改为第一行的话只要输入数字1即可。
- 第二步:改正
正如我上面第二句的 WHERE写错了,那么修改格式为: N text(N为行数,text为修改后的内容)
SQL> 2 WHERE ENANME='MENG'
重新查看以确认:
SQL> L
结果为:
1 SELECT ENAME ,JOB ,SAL FROM EMP1
2 WHERE ENAME='MENG'
可见,已经修改了过来。
如果想要改正的地方只是当前行中的某个单词,那么可以使用C[HANGE]进行替换,
具体格式:C /原来的文本/现在的文本
如:
SQL> C /MENG/JACK
2* where ename='JACK'
可以看到MENG 已经替换成了JACK
- 第三步:执行
那么怎么执行呢。只需要输入 / 即可
SQL> /
结果:
ENAME JOB SAL
-------------------- -------------------- ----------
MENG SALER 4000
所以输入出错了,不要着急着重新输入,改改就能用了。