iT邦幫忙

0

sql 修改單區段多筆資料

sql

抱歉說的不清楚 !https://ithelp.ithome.com.tw/upload/images/20190506/20117395n1paUjFpWl.png

比如這張圖
要把delmiters_i 這列 只找到1到100號

前面加77777

WQ iT邦新手 4 級 ‧ 2019-05-07 11:02:51 檢舉
select '77777'||delmiters_id,cash_object_id from table where delmiters_id>=1 and delmiters_id<=100
確認沒錯後,再下下列指令
update table set delmiters_id='77777'||delmiters_id where delmiters_id>=1 and delmiters_id<=100

||===>oracle DB 的字串相加,請依DB不同作業
建議補足資料庫版本與排序依據
每一個資料庫系統與不同版本間所能接受的 sql 語法有些微差異
排序的依據決定1~100號是指最新還是最舊的前 100 筆呢?
0
小魚
iT邦高手 1 級 ‧ 2019-05-05 19:03:16

你的需求要講清楚一點,
所以是所有的前面都加上aaa的意思嗎?

1
暐翰
iT邦大師 1 級 ‧ 2019-05-05 20:31:29

想要更新編碼原則?
記住更新動作前記得備份

--測試資料
CREATE TABLE invoice(val varchar(6));
INSERT INTO invoice(val)VALUES('123'),('456');

--更新動作
update invoice set val = 'aaa'+val;

--驗證
select * from invoice;

SQL Server 2017 | db<>fiddle

0
微和的風
iT邦新手 5 級 ‧ 2019-05-05 21:48:19

update invoice set field1 = 'aaa'+field1
where field1 in ('123','456')

新手下update前先select資料及結果是不是正確的,不然下錯可是改一大片資料了

0
郭彥廷 Sponge
iT邦新手 5 級 ‧ 2019-05-06 09:41:25

案例內容:

小弟新手 公司要用的。
比如invoice下的資料有123,456
要如何改成 aaa123. aaa456

案例分析:

1.提問者想要修改資料表內的資料
2.提問者想要查詢答案時呈現他要的形式

分析結果:

我認為新手應當沒有更改資料表的權限,故認為是情景 2
但仍提供兩種解法供參考

開始實作:

/*
	創建測試環境
    測試環境為 Microsoft SQL Server 2016 Standard edition
*/

--測試用資料庫
USE [TestDB]
GO

--創建測試資料表
IF  EXISTS (SELECT * FROM sys.tables WHERE object_id = OBJECT_ID(N'[dbo].[Invoice]'))
DROP TABLE [dbo].[Invoice]
GO
CREATE TABLE [dbo].[Invoice]
(
	[Id] INT  IDENTITY(1,1),
	[Code] NVARCHAR(20) NOT NULL
)
GO

--寫入測試資料
INSERT INTO [dbo].[Invoice] VALUES (N'123')
INSERT INTO [dbo].[Invoice] VALUES (N'456')
INSERT INTO [dbo].[Invoice] VALUES (N'789')

/*
	1. 修改資料表內的資料
*/

--切換到資料表存在的資料庫
USE [TestDB]
GO

--啟動交易,當資料改錯時可以立刻還原
BEGIN TRANSACTION

--開始更新
UPDATE [dbo].[Invoice]
SET [Code] = N'aaa' + [Code]

--資料驗證
SELECT [Id], [Code] FROM [dbo].[Invoice]
ORDER BY [Id] ASC 

--當資料不幸改錯
ROLLBACK TRANSACTION

--當資料改對了,認可這筆修改 預設關閉,當確定沒問題再使用,避免一鍵 F5 的慘案
--COMMIT TRANSACTION

/*
	2. 查詢答案時呈現想要的形式
*/

--切換到資料表存在的資料庫
USE [TestDB]
GO

--查詢語法
SELECT [Id], 
	(N'aaa' + [Code]) AS [Code]
FROM [dbo].[Invoice]
ORDER BY [Id] ASC 

實作結果:

Result

0
gygy2020
iT邦新手 5 級 ‧ 2019-05-06 15:40:29

假設Table 是 A 欄位是 B

select 'aaa'||B from A ;

我猜你要的是這個

我要發表回答

立即登入回答