如何在不使用 CONCAT 操作的情况下连接两列 RDBMS 字段[重复]

Posted

技术标签:

【中文标题】如何在不使用 CONCAT 操作的情况下连接两列 RDBMS 字段[重复]【英文标题】:how to concat two columns of RDBMS fields without using CONCAT operation [duplicate] 【发布时间】:2022-01-06 00:19:22 【问题描述】:

我在一个应用程序中使用 Sqlite3 和 mysql 数据库。

我写了一个查询来连接一个表的两列

select CONCAT(firstname,' ',lastname)as fullname from customers;

在sqlite中我可以写成

select firstname||' '||lastname as fullname from customers;

但我希望它通过一个查询在 Sqlite 和 Mysql 等数据库中工作。

【问题讨论】:

你可以在 php 中连接它们。 @mickmackusa 这个问题不是关于数据库驱动程序,而是关于找到一种方法让 MySQL 和 SQLite 以相同的方式运行。 @nice 对于使用 SELECT 的情况来说确实如此,但是如果查询需要在 WHERE 或 GROUP BY 或 HAVING 子句中涉及CONCAT(),那么 php 将不够用或需要 php过滤应该做的sql。 我不反对你@nice。 【参考方案1】:

MySQL实际上有一个服务器模式ANSI,它本身包含了一个模式PIPES_AS_CONCAT。在 ANSI 模式下,MySQL 将接受用于字符串连接的双管道,正如 SQLite 默认情况下所做的那样。要将 MySQL 服务器模式更改为 ANSI,请使用:

SET GLOBAL sql_mode = 'ANSI';   -- for the entire server
SET SESSION sql_mode = 'ANSI';  -- for your particular session

【讨论】:

是的,另外值得一提的是,如果你这样做,你必须使用 OR 关键字来进行 OR 布尔运算。如果|| 配置为进行字符串连接,它将不再进行 OR。这可能会改变任何现有代码的效果。

以上是关于如何在不使用 CONCAT 操作的情况下连接两列 RDBMS 字段[重复]的主要内容,如果未能解决你的问题,请参考以下文章

SQL 在 concat 语句之间打印一个空格

如何在不使用密钥的情况下将 GitHub 操作与 AWS 部署连接?

MySQL在不使用表列的情况下选择两列之间的范围日期

在不使用第三个变量或表的情况下交换表中两列的值

我可以在不返回条件列的情况下进行左连接吗?

将数据库一个表的两列数据合并且去重