[研究]TSQL, 把 table1 中欄位名稱包含 Memo 的,欄位值都設定為 N''
2024-01-19
環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19
********************************************************************************
TSQL, 把 table1 中欄位名稱包含 Memo 的,欄位值都設定為 N''
ChatGPT
在T-SQL中,你可以使用以下的UPDATE語句來將表(table)中包含特定字串的欄位值設定為N''(空字串)。這裡我們使用INFORMATION_SCHEMA.COLUMNS系統視圖來獲取表的列資訊,然後應用條件篩選。
假設你的表名稱是table1,以下是一個範例:
DECLARE @ColumnName NVARCHAR(MAX)
DECLARE @TableName NVARCHAR(MAX)
DECLARE @UpdateQuery NVARCHAR(MAX)
-- 設定表名稱
SET @TableName = 'table1'
-- 創建要更新的查詢
SET @UpdateQuery = ''
-- 獲取包含 Memo 的欄位名稱
SELECT @ColumnName = COALESCE(@ColumnName + ', ', '') + COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @TableName AND COLUMN_NAME LIKE '%Memo%'
-- 如果找到符合條件的欄位,則創建更新查詢
IF @ColumnName IS NOT NULL
BEGIN
SET @UpdateQuery = 'UPDATE ' + @TableName + ' SET '
-- 將每個欄位設定為 N'',注意這裡使用 QUOTENAME 避免SQL注入攻擊
SET @UpdateQuery = @UpdateQuery + STUFF((SELECT ', ' + QUOTENAME(COLUMN_NAME) + ' = N'''''
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @TableName AND COLUMN_NAME LIKE '%Memo%'
FOR XML PATH('')), 1, 2, '') + ';'
END
-- 如果有要更新的查詢,執行更新
IF @UpdateQuery <> ''
BEGIN
EXEC sp_executesql @UpdateQuery
PRINT '更新成功'
END
ELSE
PRINT '找不到符合條件的欄位'
|
這個腳本會動態生成一個UPDATE語句,該語句將包含Memo的所有欄位的值都設定為N''。請注意,使用動態SQL語句有潛在的安全風險,請確保你的應用程序對表名稱進行了適當的輸入驗證,以防止SQL注入攻擊。
********************************************************************************
如果要顯示執行的 T-SQL
|
改成
-- 如果有要更新的查詢,執行更新 IF @UpdateQuery <> '' BEGIN -- EXEC sp_executesql @UpdateQuery -- PRINT '更新成功' PRINT @UpdateQuery |
********************************************************************************
TSQL, 欄位數量不固定,把 table1 中欄位名稱包含 Memo 的,欄位值都設定為 N'',
把 table1 中欄位名稱包含 Check 的,欄位值都設定為 1,
把 table1 中欄位名稱 A1 ,欄位值都設定為 N'',
把 table1 中欄位名稱 A2 ,欄位值都設定為 N'',
把 table1 中欄位名稱 A3 ,欄位值都設定為 N'',
把 table1 中欄位名稱 A4 ,欄位值都設定為 null
ChatGPT
若欄位數量不固定,可以使用動態 SQL 來構建 UPDATE 語句。以下是一個 T-SQL 的範例,可以實現你的需求:
|
********************************************************************************
(完)
相關
[研究]T-SQL 選擇 Table1 中包含 "Memo" 的欄位名稱以及相應的欄位內容
https://shaurong.blogspot.com/2024/01/t-sql-table1-memo.html
[研究]TSQL, 把 table1 中欄位名稱包含 Memo 的,欄位值都設定為 N'
'https://shaurong.blogspot.com/2024/01/tsql-table1-memo-n.html


沒有留言:
張貼留言