mysql concat数据如果为null,则结束,如果为非null,则继续concat

mysql concat数据如果为null,则结束,如果为非null,则继续concat,mysql,concat,Mysql,Concat,我以前在sql问题中使用过stack over flow,并取得了成功 这一次,我的下一期可能不会那么成功 我有一个表,我们将称之为Statements\u1,它大约有50列,比如说10000行 每列中都有一条语句,如“my dog runs”,或者该列为空 列标记为1、2、3等,直到50 以及所有行都以简单pk开始,从1开始直到10000 表中每一行的数据长度不一致 例如,第1行在5个连续列中有一条语句,第2行在37个连续列中有一条语句,第3行在19个连续列中有一条语句,等等 我需要做的是编写

我以前在sql问题中使用过stack over flow,并取得了成功

这一次,我的下一期可能不会那么成功

我有一个表,我们将称之为
Statements\u1
,它大约有50列,比如说10000行

每列中都有一条语句,如“my dog runs”,或者该列为空

列标记为1、2、3等,直到50

以及所有行都以简单pk开始,从1开始直到10000

表中每一行的数据长度不一致

例如,第1行在5个连续列中有一条语句,第2行在37个连续列中有一条语句,第3行在19个连续列中有一条语句,等等

我需要做的是编写一些简单的代码,使用语句into table statements_2 column bullet创建一个html格式的项目符号类型的段落。例:

我的狗跑
14个苹果味道很好
是的,这很有趣
我在浪费我的资源

我知道如何仅对整行列进行压缩,但这将浪费cpu和脚本运行时间,并最终在创建的网页上留下大量空白,其中存在空数据,这取决于行列和中的数据量

它不仅浪费时间,而且内存积累得如此之快,我不得不将脚本限制在每次80个,这样服务器就不会锁定,并在我过载内存使用量后给我一个网关超时


关于从哪里开始有什么建议吗?

你在找这个吗

SELECT id, 
       CONCAT_WS(' ', 
                 COALESCE(col1, ''),
                 COALESCE(col2, ''),
                 COALESCE(col3, ''),
                 COALESCE(col4, ''),
                 COALESCE(col5, '')) bullet
  FROM Statements_1
输出:

| ID | BULLET | ---------------------------------- | 1 | my dog runs | | 2 | 14 apples taste good | | 3 | yes this is fun | | 4 | I am wasting my resources | |ID |子弹| ---------------------------------- |我的狗跑| |2 | 14个苹果味道很好| |3 |是的,这很有趣| |4 |我在浪费我的资源| 这里是演示

返回列表中的第一个非空值。在本例中,如果列值为NULL,则返回空字符串,否则返回值本身。

现在是一种用分隔符连接一组值的简便方法。

您能解释一下concat_ws的作用吗?以及合并?我以前从未使用过这两种变体。而且SQLFiddle非常有用@Chris查看更新的答案以获得一些解释。如果它是你要找的,请考虑答案。“克里斯有帮助吗?”你的问题需要更多的帮助吗?很高兴听到这个!这个答案有帮助吗?