如何在不使用 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 字段[重复]的主要内容,如果未能解决你的问题,请参考以下文章