将字符串连接到 SELECT * MySql
Posted
技术标签:
【中文标题】将字符串连接到 SELECT * MySql【英文标题】:Concat a string to SELECT * MySql 【发布时间】:2012-11-13 02:45:17 【问题描述】:以下查询适用于 mysql:
SELECT concat(title,'/') FROM `socials` WHERE 1
它将 / 连接到选定的标题字段。
但是,当我尝试执行以下操作时:
SELECT concat(*,'/') FROM `socials` WHERE 1
它返回以下错误:
#1064 - You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use near '*,'/') FROM `socials` WHERE 1 LIMIT 0, 30' at line 1
那么有什么方法可以让这样的 sql 查询与 MySql 一起工作
【问题讨论】:
不,这不能在普通选择中完成。可以使用存储过程吗? 不使用存储过程对我来说不是一个选项。 【参考方案1】:你不能用一个字符串连接多个字段。您需要选择一个字段来代替所有 (*
)。
【讨论】:
【参考方案2】:如果要使用/作为分隔符连接字段,可以使用concat_ws
:
select concat_ws('/', col1, col2, col3) from mytable
但是,您无法逃避列出查询中的列。 *-syntax 仅适用于“select * from”。您可以列出列并动态构建查询。
【讨论】:
【参考方案3】:您根本无法在 SQL 中做到这一点。您必须明确列出字段并连接每个字段:
SELECT CONCAT(field1, '/'), CONCAT(field2, '/'), ... FROM `socials` WHERE 1
如果您使用的是应用程序,则可以使用 SQL 读取列名,然后使用您的应用程序构造一个类似上述的查询。请参阅此 *** 问题以查找列名:Get table column names in mysql?
【讨论】:
谢谢大家,但获得正确答案的最明显的方面是展示如何实现选择多个字段。 @sємsєм,您可以手动列出它们(或者,如果您使用的是应用程序,您可以使用 SQL 来读取列,然后使用您的应用程序构造一个类似上面的查询)。 【参考方案4】:您不能在多个字段上执行此操作。也可以找this。
【讨论】:
以上是关于将字符串连接到 SELECT * MySql的主要内容,如果未能解决你的问题,请参考以下文章