where 1=1 &P_where其中P_where 是参数!如果不加1=1参数p_where为null时就会出错,加上1=1就无论如何都能执行不出错。1<>1也是同理。
1=1 &P_where 应该写成P_where is not null,这样比较规范
1=1 &P_where 应该写成P_where is not null,这样比较规范不是这样的意思,&P_where是另一个条件,是运行时才知道的条件,其实等于动态sql。 &P_where 肯定是:and conditions
组合查询时用的。 比如select * from table_name where &condition &condition是一个变量,动态生成的,比如有两个查询条件,id和name。比如用户选择了id和name,那么语句就是select * from table_name where id='XXX' and name='XXX'。但是如果用户不选择查询条件,默认查出所有的数据。语句就变成了select * from table_name where 很明显不对嘛,为了保证正确还得考虑where是不是应该存在,麻烦!所以我们就需要增加一个始终存在的条件,如1=1。select * from table_name where 1=1 &condition。这样&condition就可以用 and 字段='XXX'组合。没有条件时就是select * from table_name where 1=1。
select tbl_name,tbl_desc from tbl_test where 1=1 +"and tbl_name='abc'" +"and tbl_name='abc'",做多条件查询时假如没选择条件,就变成了select tbl_name,tbl_desc from tbl_test where 1=1,如果没1=1便成了select tbl_name,tbl_desc from tbl_test where 是会报错的。
建临时表用 create table table_temp tablespace tbs_temp as select * from table_ori where 1<>1
拷贝表 create table_name as select * from Source_table where 1=1;复制表结构 create table_name as select * from Source_table where 1<>1;
——我看啊,还是这位仁兄有点水平,其他的就…… junval(Junval Shi) ( ) 信誉:100 Blog 拷贝表 create table_name as select * from Source_table where 1=1;复制表结构 create table_name as select * from Source_table where 1<>1;
&P_where 肯定是:and conditions
比如select * from table_name where &condition
&condition是一个变量,动态生成的,比如有两个查询条件,id和name。比如用户选择了id和name,那么语句就是select * from table_name where id='XXX' and name='XXX'。但是如果用户不选择查询条件,默认查出所有的数据。语句就变成了select * from table_name where 很明显不对嘛,为了保证正确还得考虑where是不是应该存在,麻烦!所以我们就需要增加一个始终存在的条件,如1=1。select * from table_name where 1=1 &condition。这样&condition就可以用 and 字段='XXX'组合。没有条件时就是select * from table_name where 1=1。
+"and tbl_name='abc'",做多条件查询时假如没选择条件,就变成了select tbl_name,tbl_desc from tbl_test where 1=1,如果没1=1便成了select tbl_name,tbl_desc from tbl_test where 是会报错的。
create table table_temp tablespace tbs_temp as
select * from table_ori where 1<>1
create table_name as select * from Source_table where 1=1;复制表结构
create table_name as select * from Source_table where 1<>1;
1<>1永假对于有些查询会限制你必须输入查询条件但确实无相关条件的时候就可以使用这两个来代替
对于有些查询
尤其是动态拼凑的SQL语句
where 子句先用一个 1=1或者1<>1
然后在拼凑..
比如<select id="testid"parameterClass="java.util.HashMap"resultClass="java.util.HashMap">
<![CDATA[
select
column1,
column2,
column3
from
table
where
1=1
]]>
<dynamic>
<isNotEmpty prepend="and" property="column1">
<![CDATA[
column1 = #column1#
]]>
</isNotEmpty>
</dynamic>
</select>
junval(Junval Shi) ( ) 信誉:100 Blog
拷贝表
create table_name as select * from Source_table where 1=1;复制表结构
create table_name as select * from Source_table where 1<>1;
+ "and tbl_name= 'abc ' ",其实这个题很好 就是回答有点含糊 其实有着一句就够了 至于1<>1和这个是对立的 说多了反而糊涂