"Persons" 表中选取居住在以 "N" 开始的城市里的人:
SELECT * FROM Persons
WHERE City LIKE 'N%'
"Persons" 表中选取居住在以 "g" 结尾的城市里的人:
SELECT * FROM Persons
WHERE City LIKE '%g'
"Persons" 表中选取居住在包含 "lon" 的城市里的人:
SELECT * FROM Persons
WHERE City LIKE '%lon%'但如果是like '%%' 是不是相当于没有该检索条件?????
SELECT * FROM Persons
WHERE City LIKE 'N%'
"Persons" 表中选取居住在以 "g" 结尾的城市里的人:
SELECT * FROM Persons
WHERE City LIKE '%g'
"Persons" 表中选取居住在包含 "lon" 的城市里的人:
SELECT * FROM Persons
WHERE City LIKE '%lon%'但如果是like '%%' 是不是相当于没有该检索条件?????
----------
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMSENAME
----------
JAMES
FORD
MILLER已选择14行。
--查询姓名中含有UR的员工
SQL> select ename from emp where ename like upper('%ur%');ENAME
----------
TURNER
%和%之间如果什么也没有ename为空的能检索出来吗?
还是检索不为空的???
==
select * from emp
select * from emp where ename like upper('%%')
--相当于
select * from emp where ename is not null
但是没有你这种写法地 like '%%'
如果你要匹配字串中%开头的字串,就要用到转义字符按 ,如 like'\%%' escape '\'
--相当于
select * from emp where ename is not null就是说ename like upper('%%') 相当于是匹配任何值了呗但为什么不包括null呢。 没想明白
%是个通配符啊 null是啥都没有 怎么配 空格倒是可以配出来
这样应该容易理解了吧
但如果是like '%%' 是不是相当于没有该检索条件?????
SELECT * FROM Persons
=
SELECT * FROM Persons WHERE City LIKE like '%%'
不等于,因为假如ename为null,就查询不出来
ename 为 null的当然就检索不出来; select * from emp where ename like '%'
和
select * from emp where ename is not null
是等价的
但前者没有后者效率高;
null的特殊之处还在于 NULL 是不能用 = 或者 != 来判断的
必须用 is null 或者 is not null 还有如果你定义了 ename varchar2(20) := '';
那么 ename is not null 是成立的; ename varchar2(20) := null;
那么 ename is null 是成立的;