SQL SERVER 中怎么将一个表中的几列数据更新到该表中另外一列中去

Wtcwtc0828 2017-12-07 10:16:46

就是想把 name , POINT,NUMBER 这三列下面的数据
更新到DETAILS列中去?
请问这样的功能怎么实现?谢谢

...全文
378 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 2017-12-07
  • 打赏
  • 举报
回复
USE tempdb
GO
IF OBJECT_ID('t') IS NOT NULL DROP TABLE t
CREATE TABLE t(id INT,[name] NVARCHAR(10),[point] INT,number INT,details NVARCHAR(50))
INSERT INTO t (id ,[name] ,[point] ,number ) VALUES(1,'a',2,3)
--适用于SQL Server2012+
UPDATE t SET details =  CONCAT(id,[name],[point],[number])
SELECT * FROM t
/*
id          name       point       number      details
----------- ---------- ----------- ----------- --------
1           a          2           3           1a23
*/
删库到跑路 2017-12-07
  • 打赏
  • 举报
回复
转类型,加字符串就行了
听雨停了 2017-12-07
  • 打赏
  • 举报
回复
引用 2 楼 Wtcwtc0828 的回复:
[quote=引用 1 楼 qq_37170555 的回复:]
三列怎么更新到一列,拼接起来然后更新还是怎么着


对,三列的数据合起来就行[/quote]

use Tempdb
go
--> --> 听雨停了-->测试数据

if not object_id(N'Tempdb..#tab') is null
drop table #tab
Go
Create table #tab([id] int,[name] nvarchar(23),[POINT] int,[NUMBER] int,[details] VARCHAR(20))
Insert #tab
select 1,N'aaa',123,100,null union all
select 2,N'bbb',456,200,null
--测试数据结束

--select
SELECT * ,NAME+cast(point AS VARCHAR(20))+cast(number AS VARCHAR(20)) as details2 FROM #tab

--update
UPDATE #tab SET details = NAME+cast(point AS VARCHAR(20))+cast(number AS VARCHAR(20))


那么简单也不会?没有道理啊
Wtcwtc0828 2017-12-07
  • 打赏
  • 举报
回复
引用 1 楼 qq_37170555 的回复:
三列怎么更新到一列,拼接起来然后更新还是怎么着
对,三列的数据合起来就行
听雨停了 2017-12-07
  • 打赏
  • 举报
回复
三列怎么更新到一列,拼接起来然后更新还是怎么着
听雨停了 2017-12-07
  • 打赏
  • 举报
回复
引用 6 楼 Wtcwtc0828的回复:
[quote=引用 3 楼 qq_37170555 的回复:] [quote=引用 2 楼 Wtcwtc0828 的回复:] [quote=引用 1 楼 qq_37170555 的回复:] 三列怎么更新到一列,拼接起来然后更新还是怎么着
对,三列的数据合起来就行[/quote]

use Tempdb
go
--> --> 听雨停了-->测试数据
 
if not object_id(N'Tempdb..#tab') is null
	drop table #tab
Go
Create table #tab([id] int,[name] nvarchar(23),[POINT] int,[NUMBER] int,[details] VARCHAR(20))
Insert #tab
select 1,N'aaa',123,100,null union all
select 2,N'bbb',456,200,null
--测试数据结束

--select
SELECT * ,NAME+cast(point AS VARCHAR(20))+cast(number AS VARCHAR(20)) as details2 FROM #tab

--update
UPDATE #tab SET details = NAME+cast(point AS VARCHAR(20))+cast(number AS VARCHAR(20))
那么简单也不会?没有道理啊[/quote] 呃呃,如果是details这一列原来就有数据呢?这种情况也一样嘛?[/quote] 不管原来有没有数据,你要更新就更新,不要更新就不更新就可以嘛
Wtcwtc0828 2017-12-07
  • 打赏
  • 举报
回复
引用 3 楼 qq_37170555 的回复:
[quote=引用 2 楼 Wtcwtc0828 的回复:] [quote=引用 1 楼 qq_37170555 的回复:] 三列怎么更新到一列,拼接起来然后更新还是怎么着
对,三列的数据合起来就行[/quote]

use Tempdb
go
--> --> 听雨停了-->测试数据
 
if not object_id(N'Tempdb..#tab') is null
	drop table #tab
Go
Create table #tab([id] int,[name] nvarchar(23),[POINT] int,[NUMBER] int,[details] VARCHAR(20))
Insert #tab
select 1,N'aaa',123,100,null union all
select 2,N'bbb',456,200,null
--测试数据结束

--select
SELECT * ,NAME+cast(point AS VARCHAR(20))+cast(number AS VARCHAR(20)) as details2 FROM #tab

--update
UPDATE #tab SET details = NAME+cast(point AS VARCHAR(20))+cast(number AS VARCHAR(20))
那么简单也不会?没有道理啊[/quote] 呃呃,如果是details这一列原来就有数据呢?这种情况也一样嘛?

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧