我想在我的数据库中更新字符串( varchar
)列。我想连接 ',' + 值。
这是有效的,但如果数据库列中的值为空,我不想添加 ',' (逗号)。
开头有逗号是没有意义的。
UPDATE ImportState
SET ClientValidationRemark = ClientValidationRemark + ',' + @ClientValidationRemark
WHERE Id=@ImportId
当然,如果值不为空,我每次都想添加逗号。你知道任何简单,干净的方法来做到这一点吗?我总是更新一行,
@ImportId
是主键。
最佳答案
好吧,让我首先说将分隔字符串保留在单个列中是一种糟糕的数据库设计,只有一个异常(exception):当数据从未在 sql 中使用而在应用程序中需要作为分隔字符串时。在超过 16 年的编程生涯中,我只存储过一次这样的值,而且正是这种情况。
但是,如果您选择存储分隔值,这里有一些很容易做到的事情:
UPDATE ImportState
SET ClientValidationRemark = ISNULL(NULLIF(ClientValidationRemark, '') + ',', '') +
@ClientValidationRemark
WHERE Id=@ImportId
利用将字符串连接到空值将导致空值的事实(注意:仅当您使用 string concatenation operator (
+
) 时,而不是当您使用内置函数时 concat
),我使用了 NULLIF
转换 ClientValidationRemark
中的空字符串值为空,然后 ISNULL
转换 null + ', '
回到空字符串。
关于SQL 字符串连接,仅当 column 不为 null 时才以 ',' 分隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30913374/