是否存在類似以下的查詢:
UPDATE FieldName FROM TableName WHERE FieldName IN('NA') SET FieldName = NULL
事實是FieldName可以是任何欄位嗎?
例如
| 欄位 1 | 場 2 | 欄位 3 | 場 4 | .... | 現場100 |
|---|---|---|---|---|---|
| 013475 | 486466 | 486655 | 156861 | .... | 15351312 |
| 013475 | 不適用 | 486655 | 156861 | .... | 15351312 |
| 013475 | 486466 | 不適用 | 156861 | .... | 不適用 |
| 013475 | 486466 | 486655 | 不適用 | .... | 不適用 |
執行查詢后,我應該:
| 欄位 1 | 場 2 | 欄位 3 | 場 4 | .... | 現場100 |
|---|---|---|---|---|---|
| 013475 | 486466 | 486655 | 156861 | .... | 15351312 |
| 013475 | 486655 | 156861 | .... | 15351312 | |
| 013475 | 486466 | 156861 | .... | ||
| 013475 | 486466 | 486655 | .... |
請注意,我正在研究訪問權限。
uj5u.com熱心網友回復:
您可以做的一件事是使用一些 VBA 來回圈欄位并運行一組更新陳述句。就像是:
Sub sUpdateData()
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim fld As DAO.Field
Dim strSQL As String
Set db = CurrentDb
Set tdf = db.TableDefs("TableName")
For Each fld In tdf.Fields
strSQL = "UPDATE TableName SET [" & fld.Name & "]=NULL WHERE [" & fld.Name & "]='NA';"
db.Execute strSQL
Next fld
Set tdf = Nothing
Set db = Nothing
End Sub
uj5u.com熱心網友回復:
不能。SQL 中的欄位名和表名不能是動態的。
將DAO用于此類任務:
Public Function CleanNa()
Dim Records As DAO.Recordset
Dim Field As DAO.Field
Dim Sql As String
Sql = "Select * From Tablename"
Set Records = CurrentDb.OpenRecordset(Sql)
Records.MoveFirst
While Not Records.EOF
For Each Field In Records.Fields
If Field.Value = "NA" Then
Records.Edit
Field.Value = Null
Records.Update
End If
Next
Records.MoveNext
Wend
Records.Close
End Function
uj5u.com熱心網友回復:
必須明確參考要更新的每個欄位。
考慮具有 2 個欄位的示例:
UPDATE tablename SET Field2 = IIf(Field2 = "NA", Null, Field2),
Field3 = IIf(Field3 = "NA", Null, Field3)
或者,構建 VBA 程序以對記錄集執行編輯或在回圈中運行重復的 UPDATE 操作陳述句。
否則,打開表并對整個表運行一次查找/替換。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/359373.html
