通过连接 2 个 int 列来更新字符串字段

ali*_*ish -2 sql-server sql-server-2012 update concat

我有 2 列 anint和 a tiny int,我想varchar用值更新另一列 a one column1 + '-' + column2。像这样的伪代码:

UPDATE COLUMN3 varchar = CONCAT (COLUMN1 INT AND + COLUMN2 TINYINT);
Run Code Online (Sandbox Code Playgroud)

我怎样才能用真正的代码做到这一点?

EzL*_*zLo 6

需要参考您的表格。CONCAT函数将处理INT和之间的转换TINY INT

UPDATE YourTableName SET Column3 = CONCAT(Column1, '-', Column2)
Run Code Online (Sandbox Code Playgroud)

NULL值被视为空字符串 ( '') CONCAT。如果要过滤掉这些记录,请添加IS NOT NULLWHERE条件。

UPDATE YourTableName SET Column3 = CONCAT(Column1, '-', Column2) 
WHERE Column1 IS NOT NULL AND Column2 IS NOT NULL
Run Code Online (Sandbox Code Playgroud)

您也可以显式转换为VARCHAR,但请记住,以NULL这种方式(与+)连接的任何值都会产生NULL结果。

UPDATE YourTableName SET 
    Column3 = CONVERT(VARCHAR(50), Column1) + '-' + CONVERT(VARCHAR(50), Column2)
Run Code Online (Sandbox Code Playgroud)