【发布时间】:2019-12-25 20:00:12
【问题描述】:
使用 transact-sql (t-sql) 我有一个字符串常量和三个字符串变量,我想在每个值之间用分号分隔符连接。三个字符串变量中的每一个有时都是空白或空值,这会产生我不想要的有一个、两个或三个分号分隔符的情况。
我尝试了根据 t-sql 网站应该可以工作的 Concat_ws() 函数,但我收到错误消息,指出函数名称无法识别。我尝试了两个带有 Replace() 函数的语句,其中我用空格替换了双分号或三重分号。这行得通,但看起来很粗糙,不会帮助我只替换一个尾随分号。有什么想法吗?
当 var 为空时产生过多分号的示例代码:
Concat('Label ', ';', var1, ';', var2, ';', var3) as Result
【问题讨论】:
-
Concat_ws() 已添加到 SQL Server 2017。
-
Concat_WS() 不适合我。给出错误。不知道我有什么版本的 t-sql,它是供应商软件的一部分。
-
Concat_WS将跳过null的参数,但不是空字符串。您可以使用case表达式(或iif)将null替换为空字符串。提示:select @@Version;将返回 SQL Server 的版本。 -
请将您从
SELECT @@VERSION获得的结果添加到您的问题中。看来您正在运行 2017 年之前的版本。 -
我会尝试一个 case 表达式或 iif。当我运行时选择@@Version;错误说必须删除标量变量@@Version。
标签: sql sql-server tsql delimiter trailing