关于一句sql 不太明白?

来源:百度知道 编辑:UC知道 时间:2024/05/13 12:06:27
select replace('jim green',(select substring('jim green',2,3)),'');

括号里的(select substring('jim green',2,3))换成substring('jim green',2,3)不行吗? 为什么要加select?不加不行吗?

这个可以的,因为当返回的结果集只有一行一列时,即只有一个时,我们可以直接使用等于等操作符
比如说:
select * from tb_user where name = (select 'myname')

select * from tb_user where name ='myname'
有一样的效果.所以你上面可以这么写
select replace('jim green',substring('jim green',2,3),'');
其实select 和 print的作用 差不多,但是select能够对多条进行显示,并且显示的值还可以做为其他作用.而print就只能显示.

你试试呗。不同的SQL引擎对写法要求都不同。没有统一的标准。

语法规则...

貌似两个方法在作祟,REPALCE里面的是2个参数,后面的SELECT参数又是个查询结果集,你如果换成了SUBSTRING(..)只是一个方法的返回值而已,记住是一个值,加了SELECT就成了一个结果集,整个语句是对查询的结果在进行筛选,结果还是个结果集,明白了吗?
用对象的角度来看,SELECT返回是许多的对象,而SUBSTRING返回的只是对象的某个属性

不用加select,是substr(),测试如下:

SQL> select replace('jim green',substr('jim green',2,3),'') from dual;

REPLACE('JIMGREEN',SUBSTR('JIM
------------------------------
jgreen

1、不加也可以,返回值是一样的。
2、【select substring('jim green',2,3)】和 【substring('jim green',2,3)】的结果是一样的。
但是如果你想单独