Mysql SQL CONCAT列,并在每个非空条目后添加return

Mysql SQL CONCAT列,并在每个非空条目后添加return,mysql,sql,concat,Mysql,Sql,Concat,我有一个非常具体的问题。 我必须构建一个SQL语句来构建一个表,其中一些列合并在一起。这些列的格式应使用诸如“\n”或“或“-”之类的分隔符。仅当前面的列不为空或null时,才应添加这些分隔符。这样可以防止出现空行或不需要的分隔符 我是这样开始的: SELECT any_table.table_id, CONCAT(any_table.text1, '\n', any_table.text2) AS text1_2, FROM any_table WHERE any_

我有一个非常具体的问题。 我必须构建一个SQL语句来构建一个表,其中一些列合并在一起。这些列的格式应使用诸如“\n”或“或“-”之类的分隔符。仅当前面的列不为空或null时,才应添加这些分隔符。这样可以防止出现空行或不需要的分隔符

我是这样开始的:

SELECT
    any_table.table_id,
    CONCAT(any_table.text1, '\n', any_table.text2) AS text1_2,

FROM
    any_table

WHERE any_table.use = 'true'
此代码将text1和text2合并为新的列text1_2,并使用换行符作为分隔符。缺少的部分是,如果任何_table.text1不为null或空,则只需添加换行符

使用SQL有没有一种优雅的方法


thx

一些数据库支持一个非常方便的函数,名为
concat_ws()
,它可以实现您想要的功能:

CONCAT_WS('\n', NULLIF(any_table.text1, ''), NULLIF(any_table.text2, '')) AS text1_2,
在标准SQL中,您可以执行以下操作:

TRIM(LEADING '\n' FROM CONCAT( '\n', || NULLIF(any_table.text1, ''),
                               '\n' || NULLIF(any_table.text2, '')
                             )
    )

您的数据库可能不支持这两种结构。

有些数据库支持一个非常方便的函数,名为
concat\u ws()
,它可以实现您想要的功能:

CONCAT_WS('\n', NULLIF(any_table.text1, ''), NULLIF(any_table.text2, '')) AS text1_2,
在标准SQL中,您可以执行以下操作:

TRIM(LEADING '\n' FROM CONCAT( '\n', || NULLIF(any_table.text1, ''),
                               '\n' || NULLIF(any_table.text2, '')
                             )
    )

您的数据库可能不支持这两种结构。

如果您使用的是SQL SERVER

SELECT id, CONCAT(colonne1 + ' - ', colonne2) FROM "table" 
如果你在甲骨文下:你应该用
| |
来表达你的意思

SELECT id, CONCAT(colonne1 || ' - ', colonne2) FROM "table"

如果您在SQL SERVER下,您可以使用

SELECT id, CONCAT(colonne1 + ' - ', colonne2) FROM "table" 
如果你在甲骨文下:你应该用
| |
来表达你的意思

SELECT id, CONCAT(colonne1 || ' - ', colonne2) FROM "table"

我不认为
concat()
是标准的SQL。第一个代码对我来说非常好。非常感谢。我不认为
concat()
是标准的SQL。第一个代码对我来说非常好。非常感谢你。