MYSQL 连接时的情况

标签 mysql sql concatenation case-when

当我尝试添加在连接多个输入之前必须满足的条件时,我似乎无法获得正确的语法,我将在下面留下代码,但本质上是 CASE when 'Condition'THEN 连接这些字符串 + 列然后给我 X ELSE 0 本质上与任何其他 case when 语句一样,但使用 concat。我尝试过 IF 语句,但也没有成功(我主要使用 MYSQL)

我使用 concat 两次的原因是信息位于两个单独的表中,所以我需要使用 ||产生我需要的输出,但我想要 10 种情况,根据这些条件之一是否为真,它将发出该串联

CASE WHEN 'specific condition' THEN concat('string',employee2.firstname) || concat('/employerid/',employee.lastname) ELSE 'Null')
WHEN ....
WHEN.....
WHEN ....END) as employee_ID

最佳答案

运算符||logical OR operator在 MySql 中而不是连接运算符(除非启用了 PIPES_AS_CONCAT SQL 模式)。

the reason I am using concat twice is the info is in two separate tables

如果您想要连接所有 4 个值,那么您只需从 CASE 表达式访问两个表,就没有理由使用 concat() 两次。

Concat() 可以采用多个参数,因此可以使用:

concat('string',employee2.firstname) || concat('/employerid/',employee.lastname)

这样做:

concat('string',employee2.firstname, '/employerid/',employee.lastname)


注意:'Null' 不是 NULL,它是一个字符串文字。
所以做这样的事情:

CASE 
  WHEN 'specific condition' THEN concat('string',employee2.firstname,'/employerid/',employee.lastname) 
  WHEN ....
  WHEN.....
  WHEN ....
END as employee_ID

如果您只想返回 NULL,则不需要 ELSE 部分。

关于MYSQL 连接时的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59219188/

相关文章:

mysql - 连接具有空字段值的表时出错

python - 在 django 中进行原始 SQL 查询后结果为空,但在 mysql 数据库中使用相同的 sql 却是正确的?

python - rbindlist相当于Python中R的函数

sql - COALESCE 或 CASE 更高效和/或标准

c++ - 连接两个std::vector

C 在 while 循环中连接字符串

mysql - mysql过程中的多次插入会引发错误

mysql - 按周检查的 SQL 查询

sql - 在没有唯一标识符且不使用 ORDER BY 的情况下获取表中的最后一行

sql - postgresql - 日期时间的列和按小时分组的总和