如何替换SQL中列中相等的值?

时间:2015-12-07 05:40:14

标签: sql sql-server-2008

我在表中有以下列,它具有相同的字符串值。我需要替换相同的字符串,例如:

+----+-------------+
| ID | Column_Name |
+----+-------------+
|  1 | Imports     |
|  2 | Imports     |
|  3 | Exports     |
|  4 | Exports     |
+----+-------------+

需要替换为:

+----+-------------+
| ID | Column_Name |
+----+-------------+
|  1 | Imports1    |
|  2 | Imports2    |
|  3 | Exports1    |
|  4 | Exports2    |
+----+-------------+

有没有办法在SQL查询中实现这一点?

  

这样做的目的是我使用 'Column_Name' 字符串   动态SQL中的值替换因为的Integer值   相同的名称列的不同值没有得到   替换。

2 个答案:

答案 0 :(得分:2)

你可以试试这个:

UPDATE Your_Table
SET Name = Name + CAST(RN AS varchar(1)) FROM -- varchar(10)
                    (SELECT ROW_NUMBER() OVER(PARTITION BY Name ORDER BY ID) AS RN
                     FROM Your_Table) AS A

答案 1 :(得分:2)

这是一个可以实现你想要的东西。它执行两个内部查询的并集,每个查询按照原始Import值的顺序对来自1的ExportID记录进行编号。外部查询选择ID以及新的Column Name

SELECT ID, CONCAT([Column Name], NewID)
FROM
(
    SELECT ID, [Column Name],
    ROW_NUMBER() OVER (ORDER BY ID ASC) AS NewID
    FROM your_table
    WHERE [Column Name] = 'Exports'
    UNION ALL
    SELECT ID, [Column Name],
        ROW_NUMBER() OVER (ORDER BY ID ASC) AS NewID
    FROM your_table
    WHERE [Column Name] = 'Imports'
)
ORDER BY ID ASC