2017-09-28 1 views
0

Ich arbeite an einer SQL-Anweisung für eine Access 2013-Datenbank. Ich habe zwei Tabellen ähnlich wie bei diesen beiden:Zugriff 2013 SQL, Suche nach: in einer angegebenen Zelle

T1:

ticketID   endResult 
1 
2 

T2:

ticketID   Description 
1    Return: other text 
2    some description 

Ziel T1.endResult mit Fixed: Return zu aktualisieren ist, wenn es ein ':' in die Spalte T2.Description. All dies wird in Access 2013 mithilfe von SQL-Anweisungen durchgeführt. Momentan mache ich folgendes:

UPDATE T1 
INNER JOIN T2 ON T1.ticketID = T2.ticketID 
SET T1.endResult = ('Fixed: ' & LEFT(T2.Description, :)) 
WHERE (T1.endResult IS NULL AND (InStr(T2.Description, :,1))) 

Immer wenn ich dies ausführe, fordert mich der Zugang auf, den Wert von einzugeben:. Wie könnte ich die Beschreibung nur für dieses eine Symbol suchen? Nun, da ich die LINKE von: verwende, könnte es auch andere Werte anstelle von Return geben, die zurückgegeben werden können und trotzdem gültig sind.

Antwort

3

Ein paar Dinge, die falsch sind.

'Fixed: ' & LEFT(T2.Description, :)
- müssen Sie es sagen, wie viele Briefe zurück von Beschreibung.

Verwenden INSTR die Position zu finden: im Text:
'Fixed: ' & LEFT(Description, INSTR(Description,":")-1)

(T2.description IS NULL AND (InStr(T2.Description, :,1)))
- Beschreibung kann nicht beide NULL und enthalten eine :.

Versuchen:

UPDATE T1 INNER JOIN T2 ON T1.ticketID = T2.ticketID 
SET endresult = 'Fixed: ' & LEFT(Description, INSTR(Description,":")-1) 
WHERE INSTR(Description,":")<>0 

INSTR(Description,":") wird die Position des Textes innerhalb der Zeichenfolge zurück, oder 0, wenn es nicht vorhanden ist. Die WHERE Klausel muss nur überprüfen, dass INSTR etwas anderes als 0 zurückgibt.

Sie müssen die Feldnamen nicht vollständig qualifizieren, außer in der Join, wenn sie nur in einer der Tabellen angezeigt werden. Beschreibung erscheint nur in T2, so dass die SQL das wissen wird.

+0

Großartig, vielen Dank! Anmerkung über den IS NULL, ich wollte in T1.endResult und nicht T2.description setzen, in beiden Fällen bleibt das Endergebnis gut. Danke noch einmal! – user3216887

Verwandte Themen