oracle为什么trim() <>''会出错?

oracle为什么trim() <>''会出错?


转自:http://www.itpub.net/thread-1269027-1-1.html


注意,如果是char类型:

要用IS NOT NULL

如:

and TRIM(A.MOBILE_PHONE) IS NOT NULL

来判断

应该能去掉,你再查一下是否真的是varchar2
有可能是其他不可见字符,换行,tab等
是varchar2没错,就是不知道是什么空白字符,不知道那些人怎么输入进去的,有的是复制粘贴进去去的,
SQL> select lengthb(trim('aa'||chr(9))) from dual;




LENGTHB(TRIM('AA'||CHR(9)))
---------------------------
                          3




TAB 不能去掉,TAB看上去和空格一样



<>标签是MyBatis框架中的一个通用动态SQL标签,它可以用于任何SQL语句的动态构建。<trim>标签有三个属性:prefix、suffix、prefixOverrides、suffixOverrides。prefix属性表示在<trim>标签内部SQL语句的前缀;suffix属性表示在<trim>标签内部SQL语句的后缀;prefixOverrides属性表示需要删除的SQL语句前缀;suffixOverrides属性表示需要删除的SQL语句后缀。通过这些属性的设置,<trim>标签可以达到<where>标签和<set>标签的等价效果。 例如,当我们需要构建一个动态的更新操作时,可以使用如下的<trim>标签: ``` <update id="updateUser" parameterType="User"> update user <trim prefix="set" suffixOverrides=","> <if test="username != null">username=#{username},</if> <if test="password != null">password=#{password},</if> <if test="email != null">email=#{email},</if> </trim> <where> id=#{id} </where> </update> ``` 在这个例子中,<trim>标签的prefix属性设置为"set",表示在内部SQL语句的前面添加"set"关键字;suffixOverrides属性设置为",",表示需要删除最后一个字段后面的逗号",";<if>标签用来判断某个字段是否需要更新,如果需要则添加到内部SQL语句中,如果不需要则忽略。通过这种方式,<trim>标签可以达到<set>标签的等价效果。 同样,当我们需要构建一个动态的查询操作时,也可以使用<trim>标签来实现<where>标签的等价效果。 因此,<trim>标签是一个通用的、灵活的动态SQL构建标签,可以替代<where>标签和<set>标签,使得SQL语句的构建更加简单、灵活。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值