Mysql条件查询2(根据手机尾号的后四位查询)

本文介绍了一种使用MySQL查询语句的方法,针对手机尾号的后四位进行查询。通过设置SQL的`LIKE`操作和`CONCAT`函数,可以实现对电话号码以特定后四位结尾或包含特定后四位的查询。查询语句中利用了IF条件判断动态添加查询条件,并展示了如何通过HashMap参数传递和接收结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直接上sql语句的写法:

sql语句的写法:

    <select  id = "XXX(方法名)"  parameterType = "hashmap" resultMap = "BaseResultMap">

             select * from table(table写自己的表名称)

             where 1 = 1

             <if  test="state != null and state != ' '  ">

                      and state = #{state,jdbcType = INTEGER}

             </if>

             <if test="number != null and number !=' ' ">

                      and phone like concat ('%',#{number,jdbcType=VARCHAR})

             </if>

             order by XX(根据某个字段排序) desc

            <if test ="beginIndex != null and beginIndex != -1  ">

                     limit #{beginIndex,jdbcType=INTEGER},#{pageSize,jdbcType=INTEGER}

           </if>

    </select>


其中parameterType = "hashmap"  表示通过map集合来传递参数,resultMap = "BaseResultMap"表示返回map形式的数据,如果不知道怎么通过map封装,可以参考我前两篇文章。

if 里面的state和number字段是封装到map集合中的key值,and 后面的state和phone是数据库的字段,phone表示电话号码

phone like concat ('%',#{number,jdbcType=VARCHAR}) 表示查询后四位和number相等的手机号,

而后面再加一个‘%’,phone like concat ('%',#{number,jdbcType=VARCHAR},'%')表示查询包含number的手机号


<think>嗯,用户想查询客户表中邮箱为null的客户的特定信息,包括客户编号、名称、身份证号和手机号。首先,我需要确定正确的SQL语法。在SQL中,判断某个字段是否为null应该使用ISNULL而不是等于号,因为null不能用等于来比较。比如,写成email= null是不对的,应该用emailIS NULL。这点要特别注意,否则查询结果会不正确。然后,用户需要选择哪些字段呢?客户编号应该是client_id,名称可能是name,身份证号可能是id_card,手机号可能是mobile。这些字段名称需要根据实际的表结构来确认,但用户已经给出了具体的字段名,所以直接使用即可。接下来,组合这些字段到SELECT语句中,加上FROM client表。然后添加WHERE条件,筛选email字段为null的记录。所以完整的查询语句应该是:SELECT client_id,name,id_card, mobileFROM clientWHEREemail ISNULL;另外,考虑到用户可能需要验证结果是否正确,可以建议他们执行这个查询后检查返回的记录是否符合预期,比如邮箱确实为空的情况。同时,提醒他们注意区分NULL和空字符串的区别,因为有些情况下email字段可能存储的是空字符串而不是NULL,这时候查询条件需要改成email =''。不过根据用户的问题描述,这里明确是NULL,所以用ISNULL是正确的。 可能还需要考虑性能问题,如果client表很大,没有索引的话,全表扫描可能会比较慢。但用户当前的问题主要是正确性,所以先解决基本查询,性能优化可以在后续处理。此外,用户可能需要将这些结果导出或者进一步处理,但问题中没有提到,暂时不需要考虑。 总结一下,关键点在于正确使用ISNULL来判断空值,并正确选择所需的字段。确保SQL语法正确,避免常见的错误比如使用等号判断null。这样就能准确获取到需要的客户信息了。</think>要查询$client$表中$email$为NULL的客户信息,使用以下SQL语句: ```sql SELECT client_id, name, id_card, mobile FROM client WHERE email IS NULL; ``` ### 关键说明: 1. `IS NULL`是判断空值的标准操作符,不可用`= NULL`替代[^1] 2. 字段选择需明确指定目标字段:$client_id$, $name$, $id_card$, $mobile$ 3. 执行后返回结果将包含所有邮箱未登记的客户信息 建议通过`EXPLAIN`命令分析查询执行计划,确认是否使用索引: ```sql EXPLAIN SELECT client_id, name, id_card, mobile FROM client WHERE email IS NULL; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值