ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【SQL】MySQL中的字符串处理函数:concat 函数拼接字符串,COALESCE函数处 [打印本页]

作者: 圆咕噜咕噜    时间: 2024-7-10 22:58
标题: 【SQL】MySQL中的字符串处理函数:concat 函数拼接字符串,COALESCE函数处
一、concat ()函数

MySQL的 CONCAT 函数是一个非常实用的字符串函数,用于将两个或多个字符串参数连接成一个单一的字符串。假如任何一个参数为 NULL,则 CONCAT 函数的效果也会是 NULL。这一点在构建包含潜伏NULL值的数据库查询时特别重要,因为它大概影响到你的查询效果。
1.1、基本语法

  1. CONCAT(string1, string2, ..., stringN)
复制代码
参数
string1, string2, …, stringN:这些是要连接的字符串。你可以连接恣意数目的字符串。
1.2、示例

假设有一个数据库表 users,其中包含 first_name 和 last_name 两个字段,下面的例子展示了怎样使用 CONCAT 来生成一个完整的姓名:
  1. SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM users;
复制代码
这将把 first_name 和 last_name 通过一个空格连接起来,形成一个 full_name。
1.3、特别用途


二、COALESCE()函数

COALESCE() 函数用于从一组参数中返回第一个非空(非 NULL)的值。假如全部参数都为 NULL,则 COALESCE() 返回 NULL。
2.1、基本语法

  1. COALESCE(value1, value2, ..., valueN)
复制代码
value1, value2, ..., valueN:要查抄的参数列表。可以有多个参数,假如第一个参数不为空,则返回第一个参数的值;假如第一个参数为空,则继续查抄第二个参数,以此类推。
2.2、示例

  1. SELECT COALESCE(NULL, 'Value', 123); -- 返回 'Value'
  2. SELECT COALESCE(NULL, NULL, NULL, 123); -- 返回 123
  3. SELECT COALESCE(NULL, NULL); -- 返回 NULL
复制代码
在这些示例中,COALESCE() 函数总是返回第一个非空参数的值。假如全部参数都为空,则返回 NULL。
2.3、用途


三、进阶训练

3.1 条件和 SQL 语句

下面这段SQL查询是 mybatis 中用于从数据库中查询符合特定条件的文章数据。

具体来说,它查询的是blog_post表和users表的联合效果,条件包括:

  1. SELECT bp.*
  2. FROM blog_post bp
  3. JOIN users u ON bp.user_id = u.user_id
  4. WHERE
  5.     (COALESCE(:contentKeyword, '') = '' OR bp.title LIKE CONCAT('%', :contentKeyword, '%')
  6. OR bp.content LIKE CONCAT('%', :contentKeyword, '%'))
  7.     AND (COALESCE(:userKeyword, '') = '' OR u.username LIKE CONCAT('%', :userKeyword, '%'))
  8.     AND (COALESCE(:categoryId, 0) = 0 OR bp.category_id = :categoryId)
  9.     AND (COALESCE(:userId, 0) = 0 OR bp.user_id = :userId)
  10. ;
复制代码
3.2、解释


这个条件是用来处理用户ID搜刮的。假如 userId 参数为 NULL ,则返回 0,然后查抄 bp.user_id 是否便是 0。假如 userId 不为 NULL,则直接查抄匹配。
这种写法确保了即使参数为 NULL,也不会影响其他条件的判断,从而实现了动态条件的查询。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4