2016-08-11 2 views
0

Ich habe vier (relevante) Felder, DESCRP, Description1, Description2 und DescriptionMatch.Datentyp Mismatch on SQL Ersetzen

DESCRP sollte gleich sein wie Description1 aufgefüllt zu 18 Zeichen + Description2. Dies wird während dieses Prozesses überprüft.

Der folgende Code funktioniert gut, solange Description2 IS NOT NULL.

UPDATE tblParametersComp SET DescriptionMatch = "YES" 
WHERE (NOT (DESCRP IS NULL OR Description1 IS NULL)) 
AND 
((DESCRP = [Description1]+IIf(Len([Description1])<18,Space(18-Len([Description1])),"")+[Description2]) 

Aus irgendeinem Grund, dies nicht funktioniert, wenn Description2 IS NULL so das ich versuche, diese Zeile hinzufügen zu beseitigen (wie die Polsterung irrelevant ist, wenn es keine zweite Zeile ist:

OR Description2 IS NULL AND REPLACE(Description1," ","") = Replace(DESCRP," ","")) 

jedoch dies erzeugt den folgenden Fehler:

DB Error

die keinen Sinn macht, denn soweit ich, alle relevanten Felder sehen sind vom Datentyp Text.

DB Data

Ich habe mit CSTR(Replace(...)) = CSTR(Replace(...)) versucht, nur um sicher zu sein, und dass kein Unterschied gemacht.

Jeder Rat würde geschätzt werden!

+0

Am Ende, Ersatz + Description2 für + (Description2 + "") –

+0

Leider hat dies nicht geholfen –

+0

Verwenden Sie die gleiche IIF() in Description2. –

Antwort

0

Nach Diskussion in den Kommentaren, und niemand eine endgültige Antwort posten, scheint das Problem NULL Datensätze nicht zu behandeln.

Dies wurde mit der NZ Funktion behandelt.

So ist die Linie wurde:

WHERE DESCRP = nz([Description1],"")+IIf(Len(nz([Description1],""))<18,Space(18-Len(nz([Description1],""))),"")+(nz(Description2,""));

Welche funktioniert wie ein Charme!

Verwandte Themen