mysql的连接函数
2024-11-04 14:51:25 # 技术笔记

今天遇到了一个简单的场景,需要sql连接两个字段显示。

语法是这样的

1
2
3
4
5
6
7
8
9
SELECT CONCAT_WS(' ',snh.userneeds, snh.beizhu) AS connect_info  ,snh.createTime, lmu.createTime as regTime
FROM `supplier_needs_history` as snh
LEFT JOIN member_user as mu
ON snh.userId = mu.id
LEFT JOIN login_member_user as lmu
on mu.companyCode = lmu.companyCode
WHERE mu.companyName ='诚润建工集团有限公司'
ORDER BY snh.createTime DESC
LIMIT 3;

一开始用的是CONCA函数,但是当时出现了一个奇怪的情况,后来查询才知道,当我连接的两个字段里面其中一个为null的时候,拼接后的结果也是null

在查询之后使用了CONCAT_WS函数

  1. CONCAT(): CONCAT() 函数用于拼接两个或多个字符串。

    1
    SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees;
  2. CONCAT_WS(): CONCAT_WS() 函数用于拼接字符串,并在每个字符串之间插入指定的分隔符。

    1
    SELECT CONCAT_WS(', ', last_name, first_name) AS full_name FROM employees;
  3. CONCAT_NULL_YIELDS_NULL: 这是 MySQL 的系统变量,用于控制拼接操作的行为。如果设置为 ON(默认值),当任何一个操作数为 NULL 时,拼接结果将为 NULL。如果设置为 OFF,则不会将 NULL 视为 NULL

  4. 字符串运算符 (||): MySQL 支持标准 SQL 中的字符串拼接运算符 ||

    1
    SELECT first_name || ' ' || last_name AS full_name FROM employees;

这些函数和运算符允许您在 SQL 查询中执行字符串拼接操作。您可以根据自己的需求选择适当的函数或运算符。