Ich habe eine einzelne Tabelle, Kunden, und ich möchte das Feld FullName löschen / löschen und zwei Felder erstellen. Vorname bzw. Nachname. Praktischerweise bestehen die Namen im FullName nur aus zwei Teilen (z. B. John Smith, Robert Black). Ich habe den MS Access-kompatiblen SQL-Code zum Extrahieren des Vor- und Nachnamens aus dem Feld FullName unten.

SELECT 
Mid(FullName, 1, InStr(FullName, ' ') - 1) 
AS FirstName, 
Mid(FullName, InStr(FullName, ' ') + 1, Len(FullName)) 
AS LastName 
FROM Customers 

Ich möchte Vorname und Nachname mit den Werten von FullName füllen und dann FullName löschen. Unten ist mein Versuch, das Feld Vorname in DDL zu füllen.

UPDATE Customers
SET Customers.FirstName =
(SELECT Mid(FullName, 1, InStr(FullName, ' ') - 1) )

Der Fehler, den ich von MS Access erhalte, wenn ich versuche, diesen Code auszuführen, lautet "Operation muss eine aktualisierbare Abfrage verwenden".

1
Albert 18 Jän. 2019 im 08:21

3 Antworten

Beste Antwort

Sie können unten versuchen -

UPDATE Customers
SET Customers.FirstName =Mid(FullName, 1, InStr(FullName, ' ') - 1)
1
Fahmi 18 Jän. 2019 im 05:25

Keine Unterabfrage erforderlich:

UPDATE 
    Customers
SET 
    FirstName = Mid(FullName, 1, InStr(FullName, " ") - 1),
    LastName = Mid(FullName, InStr(FullName, " ") + 1),
    FullName = Null
1
Gustav 18 Jän. 2019 im 08:42

Versuche dies. Es ist nicht erforderlich, eine Unterabfrage für dieselben Tabellenspalten und Alias zu verwenden.

UPDATE Customers
SET  FirstName =Mid(FullName, 1, InStr(FullName, ' ') - 1) 
0
Muhammad Waheed 18 Jän. 2019 im 05:55