MySQL之CONCAT()的用法,mybatis like模糊查询

本文详细介绍了MySQL中CONCAT函数的用法,包括如何将多个字符串连接成一个字符串,以及CONCAT_WS函数的使用,后者允许指定分隔符来连接字符串。通过具体示例展示了函数在实际场景中的应用。
我也是菜鸟,也是新手,一起学习,一起进步,加油;

示例:
select KNWLG_ID from t_km_doc_edit_pus p where p.KNWLG_STS_CD in ('1P','2P','D','DL','PR')
<if test="tKmApproveSearch.knwlgNm != null and '' != tKmApproveSearch.knwlgNm">
    AND p.KNWLG_NM LIKE CONCAT(CONCAT('%', #{tKmApproveSearch.knwlgNm,jdbcType=VARCHAR}), '%')
</if>

一下内容来源地址:https://www.cnblogs.com/aiyr/p/6830593.html

mysql CONCAT()函数用于将多个字符串连接成一个字符串,是最重要的mysql函数之一,下面就将为您详细介绍mysql CONCAT()函数,供您参考

mysql CONCAT(str1,str2,…)                        
返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。或许有一个或多个参数。 如果所有参数均为非二进制字符串,则结果为非二进制字符串。 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况,可使用显式类型 cast, 例如: SELECT CONCAT(CAST(int_col AS CHAR), char_col)

mysql> SELECT CONCAT(’My’, ‘S’, ‘QL’);

-> ‘MySQL’

mysql> SELECT CONCAT(’My’, NULL, ‘QL’);

-> NULL

mysql> SELECT CONCAT(14.3);

-> ‘14.3′

 

mysql CONCAT_WS(separator,str1,str2,…) 
CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。   第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。

mysql> SELECT CONCAT_WS(’,',’First name’,'Second name’,'Last Name’);

-> ‘First name,Second name,Last Name’

mysql> SELECT CONCAT_WS(’,',’First name’,NULL,’Last Name’);

-> ‘First name,Last Name’

mysql CONCAT_WS()不会忽略任何空字符串。 (然而会忽略所有的 NULL)。

### MyBatis 中实现 LIKE 模糊查询的示例方法 在 MyBatis 中,可以通过多种方式实现 LIKE 模糊查询。以下是几种常见的实现方式,并结合提供的引用内容进行详细说明。 #### 1. 使用 `Example` 类实现模糊查询 MyBatis 的 `Example` 类可以动态生成 SQL 语句,支持复杂的条件组合。对于模糊查询,可以使用 `like` 方法[^1]。例如: ```java TestTableExample example = new TestTableExample(); example.createCriteria().andField1Like("value%"); ``` 上述代码将生成类似于以下的 SQL 语句: ```sql SELECT * FROM test_table WHERE field1 LIKE 'value%'; ``` 如果需要更复杂的条件,可以结合多个 `or` `and` 条件链式调用。例如: ```java TestTableExample example = new TestTableExample(); example.or().andField1Like("value%").andField2IsNull(); example.or().andField3NotEqualTo(9).andField4IsNotNull(); ``` 这将生成一个包含多条件的复杂查询语句。 --- #### 2. 在 XML 映射文件中使用 `<if>` 标签 当使用 XML 配置时,可以通过 `<if>` 标签动态判断参数是否为空,然后添加模糊查询条件[^2]。例如: ```xml <select id="selectByLike" parameterType="map" resultType="TestTable"> SELECT * FROM test_table <where> <if test="field1 != null and field1 != ''"> AND field1 LIKE CONCAT('%', #{field1}, '%') </if> </where> </select> ``` 此配置允许根据传入的参数动态生成 SQL 查询。如果 `field1` 不为空,则会添加模糊查询条件。 --- #### 3. 使用 `#{}` 参数占位符 另一种常见的方式是直接在 SQL 中使用 `#{}` 占位符传递参数,并手动拼接 `%` 符号。例如: ```xml <select id="selectByLike" parameterType="string" resultType="TestTable"> SELECT * FROM test_table WHERE field1 LIKE CONCAT('%', #{param}, '%') </select> ``` 这种方式简单明了,适用于简单的模糊查询场景[^2]。 --- #### 4. 在 Java 代码中预处理参数 为了减少 SQL 中的复杂性,可以在 Java 代码中对参数进行预处理,将 `%` 添加到参数值中。例如: ```java String param = "%" + userInput + "%"; List<TestTable> results = mapper.selectByLike(param); ``` 对应的 XML 配置如下: ```xml <select id="selectByLike" parameterType="string" resultType="TestTable"> SELECT * FROM test_table WHERE field1 LIKE #{param} </select> ``` 这种方式将逻辑封装到 Java 层,使 SQL 更加简洁。 --- ### 注意事项 - 确保用户输入的数据经过适当的安全处理,以防止 SQL 注入攻击。 - 如果使用 `CONCAT` 函数,请确保数据库支持该函数(如 MySQL)。 - 对于复杂的查询需求,推荐使用 `Example` 类或动态 SQL。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值