更新SQL Server中的部分日期

时间:2014-01-07 05:04:59

标签: sql-server sql-server-2005

我有这样的表

ID Value
112 x
113 y
114 z
115 e

我希望最后用'x'更新ID单元格,因此输出更新值应为'112x' 怎么做?

4 个答案:

答案 0 :(得分:2)

为此,您需要VARCHAR数据类型的ID列。所以你可以通过

更新它
UPDATE Table SET ID = CAST(ID AS VARCHAR(20)) + Value

否则,您可以使用VARCHAR数据类型添加新列,并在下面进行更新

UPDATE Table SET NewCol = CAST(ID AS VARCHAR(20)) + Value

答案 1 :(得分:1)

你试试这个:

 Update tablename set ID = CAST(ID AS VARCHAR(20)) + Value

答案 2 :(得分:0)

如果ID列的数据类型为INT,则无法使用Varchar数据类型进行更新。

  

UPDATE表SET ID = CAST(ID AS VARCHAR(20))+ Value

不行。

我的建议是

使用varchar数据类型创建新列,然后应用

  

更改表格选项卡添加Nwcol varchar(100)

     

UPDATE表设置NewCol = CAST(ID AS VARCHAR(20))+值

然后使用旧名称

重命名col
  

sp_rename'table.new_column','old_column','Column'

完成了。

答案 3 :(得分:0)

目前其他答案建议

UPDATE Table SET ID = CAST(ID AS VARCHAR(20)) + Value
FROM <table>

除非ID是char(x)类型,否则这不是一个好的答案。很可能ID列是一个整数,这将导致转换错误。

如果ID已经是varchar(x),则不需要转换,您只需要:

UPDATE Table SET ID = ID + Value
FROM <table>

假设ID是整数。您可以更改列,因此它可以包含varchar。如果ID是自动不重要的,并且您当前正在使用此列的其他任何地方,这可能会导致问题。使用varchar作为ID列不是好习惯。我不推荐这个。

但是为什么要将ID与varchar值组合在一起?这些值应该在不同的列中。相反,你可以做这4个建议中的一个

- 创建包含组合

的视图
CREATE VIEW v_test as 
SELECT ID, Value, CAST(ID AS VARCHAR(10)) + Value as CID FROM <table>

- 创建包含组合

的计算列
ALTER table <table> ADD cID as CAST(ID AS VARCHAR(10)) + Value 

- 创建包含具有可能索引的组合的计算列。持久计算列允许索引。

ALTER table <table> ADD cID as CAST(ID AS VARCHAR(10)) + Value PERSISTED

- 显示选择中的值(这是我假设你需要的)

SELECT CAST(ID AS VARCHAR(10)) + Value as DisplayID
FROM table