ich eine ziemlich große Abfrage haben, die eine Liste von Ladungsträgern zu bekommen versucht und vergleichen Sie die Höhe der Versicherung, die sie in den Akten haben Träger zu identifizieren die einen Mindestschwellenwert nicht erfüllen. Wenn ich die Select-Abfrage ausführen, funktioniert es einwandfrei ohne Fehler. Aber wenn ich versuche, es in eine Tabelle für einen Einsatz zu verwenden, es gibt diese FehlermeldungFehler 1366 - Falsche Dezimalwert: ‚‘ für die Spalte ‚‘ in Zeile -1
[Err] 1366 - Incorrect decimal value: '' for column '' at row -1
Ich habe am Ende dieser Abfrage die Besetzung als Dezimalzahl verwenden, da der Wert, der in dem gespeichert wird Datenbank ist ein varchar und ich kann das nicht ändern.
Wer hat irgendwelche Ideen?
set @cw_days = 15;
INSERT INTO carrier_dnl (carrier_id, dnl_reason_id, status_id)
SELECT work_cw_carrier_status_update.carrier_id, company_dnl_schema.dnl_reason_id,
CASE
WHEN work_cw_carrier_status_update.comparison_date > @cw_days THEN 1
ELSE 4
END as status
FROM work_cw_carrier_status_update
JOIN company_dnl_schema
ON company_dnl_schema.dnl_reason_id = 51
LEFT OUTER JOIN carrier_insurance
ON carrier_insurance.carrier_id = work_cw_carrier_status_update.carrier_id
WHERE ifnull(carrier_insurance.insurance_type_id,4) = 4
AND date(now()) BETWEEN IFNULL(carrier_insurance.insurance_effective_date,DATE_SUB(now(),INTERVAL 1 day)) AND IFNULL(carrier_insurance.insurance_expiration_date,DATE_ADD(now(),INTERVAL 1 day))
AND CASE WHEN NULLIF(carrier_insurance.insurance_bipdto_amount,'') is null THEN 0 < company_dnl_schema.value
ELSE
ifnull(cast(replace(carrier_insurance.insurance_bipdto_amount, '*','') as decimal),0) < company_dnl_schema.value
END
AND (work_cw_carrier_status_update.b_bulk = 0 OR work_cw_carrier_status_update.b_bulk = 1)
AND (work_cw_carrier_status_update.b_otr = 1 OR work_cw_carrier_status_update.b_ltl = 1
OR work_cw_carrier_status_update.b_dray = 1 OR work_cw_carrier_status_update.b_rail = 1
OR work_cw_carrier_status_update.b_intermodal = 1 OR work_cw_carrier_status_update.b_forwarder = 1
OR work_cw_carrier_status_update.b_broker = 1)
group by work_cw_carrier_status_update.carrier_id;`
Ich bekomme diese auch Fehler. Sehr seltsam, dass die Spalte '' und die Zeile -1 einen Fehler über den falschen Dezimalwert auslösen. Haben Sie jemals einen Workaround gefunden? – LarsH
In meinem Fall trat der Fehler beim Versuch, den Datentyp einer Spalte von Varchar (10) zu ändern, um eine Dezimalzahl (6, 3). Die Spalte hatte bereits Werte wie 3, 5, 6.1, NULL ... und eine Instanz von 'VGA'! Es stellte sich heraus, dass Letzterer der Täter war; aber die Fehlermeldung ergab immer noch keinen Sinn: Der Wert: '', Spalte '' und Zeile -1 wurden alle fälschlicherweise gemeldet. – LarsH