我的表是:然后查询语句是:我的想法是:理论上应该输出2
也就是order_info_id为2的这个值
但是实际上什么也没查到;没有查到这个字段的结果
是后面不能加等号吗?
如果不加等号,结果是:
如果不加等号不应该是1,2都输出吗?为什么会这样?
也就是order_info_id为2的这个值
但是实际上什么也没查到;没有查到这个字段的结果
是后面不能加等号吗?
如果不加等号,结果是:
如果不加等号不应该是1,2都输出吗?为什么会这样?
select order_Info_id,set_out_time,IFNULL(set_out_time,2) from order_info
说得具体一点就是:
我现在页面有很多文本框,那么我要做查询,这么多文本框一起提交,我用一条而不是多条DCL来达到这样的效果:即使某项文本框为空,只要剩下来不为空的文本框与数据库里面的记录匹配的话,那么还是可以查询出结果(当然and 连接在此处就有问题了,所以我才想到这种方式了)
,可以看出只要不为空,那么后面都是true的,无论是整型还是字符(串)
ps:上面的那种直接写出'2013/10/21',应该是字符串吧,应该有方法可以转换的,date_format(日期,'%Y-%m-%d')之类吧!
而且下面的可以看到:即使set_out_time 为空,那么代替的字符串应该和外面的一样啊,但是为什么还是查不出id为2 呢?
会不会你的set_time_out里不是null,而是空串呢
会不会你的set_time_out里不是null,而是空串呢
之前id为2的那条记录的确是为空字符,因为之前有字符,我删掉了,然后误以为为空,于是我插入了一些数据,真正为空的就被查出来了!
try:
where LENGTH(字段)=0
会不会你的set_time_out里不是null,而是空串呢即使不把它转换为日期类型,直接当做整型也还是可以得到答案啊!
那么我再多问一下:日常项目中,做类似的项目查询,有些空,有些不为空,也要你查出结果,处理方式除了在逻辑代码语句中if,else之类判断,还有其它的办法吗?(不知道我这种可不可行),只用一条语句查询出结果!
可以查出来为空串的记录,但是无法查出为空的记录,这个id为2 的记录对应的set_out_time其实是空字串;
前面分析了,where后面只要不是空,空字符串,都是可以成立的那么就可以知道,为0,为非整型的字符串也是不可以的,是不是可以推断,mysql里面自动将整型类的字符转换为整型运算了?
我觉得应该是,where后面就是一个布尔值,要么就是true,要么就是false,比如,0就是false,而'a'好像没办法转化为整数,所以返回false,而1,-1都是true
会不会你的set_time_out里不是null,而是空串呢即使不把它转换为日期类型,直接当做整型也还是可以得到答案啊!
那么我再多问一下:日常项目中,做类似的项目查询,有些空,有些不为空,也要你查出结果,处理方式除了在逻辑代码语句中if,else之类判断,还有其它的办法吗?(不知道我这种可不可行),只用一条语句查询出结果!呵呵,一般都用这个办法,这个挺好的,唯一的缺点就是用了ifnull函数,可能导致相关字段上的索引用不上了
我觉得应该是,where后面就是一个布尔值,要么就是true,要么就是false,比如,0就是false,而'a'好像没办法转化为整数,所以返回false,而1,-1都是true-1我还是有点想不通,不过既然是这么的,也没有办法了!对mysql不是很熟悉,今天要用到那个查询的东东,所有就大胆地做了一下,不知道可以不可以,还需要试试!