Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   MySQL und Excel-Automatismen beim Interpretieren von SQL-Statements? (https://www.delphipraxis.net/210951-mysql-und-excel-automatismen-beim-interpretieren-von-sql-statements.html)

Bernhard Geyer 4. Jul 2022 14:08

Datenbank: MySQL • Version: 8 • Zugriff über: egal

MySQL und Excel-Automatismen beim Interpretieren von SQL-Statements?
 
ich will per SQL ein Feld mit Prefix zurück geben:

Code:
select '957' + matnr, matnr from mat
MS SQL macht hier wie erwartet ein String-Zusammensetzung.
MySQL (8) interpretiert das erste '957# als Zahl und das Feld matnr ebenfalls als Zahl und Addiert die beiden.
matnr ist aber er ein varchar-Feld

W T H haben sich hier die Entwickler gedacht?

Zugriff/versuch mit MySQL Workbench und HeidiSQL

Wie bekommt man diesen Excel/Access-Blödsinn bei MySQL wieder weg?

Delphi.Narium 4. Jul 2022 14:14

AW: MySQL und Excel-Automatismen beim Interpretieren von SQL-Statements?
 
Bei Oracle, PostGres, Firebrid, Interbase macht man's per ||

Bei MySQL: https://www.w3schools.com/Sql/func_mysql_concat.asp

Bernhard Geyer 4. Jul 2022 14:30

AW: MySQL und Excel-Automatismen beim Interpretieren von SQL-Statements?
 
Bei MySQL scheint das ein boolean-or zu sein

Delphi.Narium 4. Jul 2022 14:53

AW: MySQL und Excel-Automatismen beim Interpretieren von SQL-Statements?
 
SQL-Code:
select 'Zeichenfolge' + 'Zeichenfolge' from tabelle
geht, soweit ich das mitbekommen habe, nur bei Microsoft.

Andere rechnen bei der Verwendung von +, sofern sich die Werte links und rechts vom + in Zahlen konvertieren lassen. Andernfalls gibt's 'nen Fehler.

Standard dürfte Concat sein, wobei man hier (strenggenommen) nummerische Werte per Cast oder Convert erstmal in Zeichenfolgen umwandeln müsste.

Die Verwendung des + ist praktisch, aber man kann nicht mit zwingender Sicherheit vorraussagen, was man als Ergebnis bekommen wird.

Zeichenfolge + Zeichenfolge = Zeichenfolge

Zahl + Zeichenfolge = Zeichenfolge

Zeichenfolge + Zahl = Zeichenfolge

Aber wehe, die Zeichenfolgen lassen sich von der Datenbank implizit in Zahlen verwandeln, dann kann auch gelten:

Zeichenfolge + Zeichenfolge = Zahl

Zahl + Zeichenfolge = Zahl

Zeichenfolge + Zahl = Zahl

Und wenn man dann etwas schreibt, was mit beliebigen Datenbanken funktionieren soll: Fröhliches Fehlersuchen.

Bernhard Geyer 4. Jul 2022 14:55

AW: MySQL und Excel-Automatismen beim Interpretieren von SQL-Statements?
 
Zitat:

Die Verwendung des + ist praktisch, aber man kann nicht mit zwingender Sicherheit vorraussagen, was man als Ergebnis bekommen wird.

Zeichenfolge + Zeichenfolge = Zeichenfolge
Das liegt ja m.E. vor
Feste Zeichenfolge + varchar-Feld

Bernhard Geyer 4. Jul 2022 15:00

AW: MySQL und Excel-Automatismen beim Interpretieren von SQL-Statements?
 
concat funktioniert.
Das genügt mir erstmal für meine One-Time Datenänderung

Delphi.Narium 4. Jul 2022 15:06

AW: MySQL und Excel-Automatismen beim Interpretieren von SQL-Statements?
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1508325)
Zitat:

Die Verwendung des + ist praktisch, aber man kann nicht mit zwingender Sicherheit vorraussagen, was man als Ergebnis bekommen wird.

Zeichenfolge + Zeichenfolge = Zeichenfolge
Das liegt ja m.E. vor
Feste Zeichenfolge + varchar-Feld

Und gilt nur bei Microsoft.

Und wenn eine feste Zeichenfolge in eine Zahl umgewandelt werden kann und der Inhalt des VarChar-Feldes ebenfalls, kann durchaus auch Zahl als Ergebnis rauskommen. Kommt halt auf die Datenbank an.

jobo 4. Jul 2022 17:56

AW: MySQL und Excel-Automatismen beim Interpretieren von SQL-Statements?
 
Vielleicht kannst Du mit irgendwelchen "Strict Mode"s mySQL etwas in Deine Richtung dressieren. (Wobei das + von MS jetzt m.E. auch nicht DER Standard ist)
Die Strict Modes sorgen jedenfalls häufiger für solide Fehlermeldungen und Verhalten, wie man es im Standard / bei den anderen gewohnt ist.
Das kann vor allem hilfreich sein, wenn man im Testumfeld agiert.
Ich finde einen harten Fehler grundsätzlich sympathischer als solchen impliziten Konvertierungsmist, der sich überall durchzieht und dann erst beim Jahresabschluss auffällt.
Da ich nie freiwillig mit mySQL arbeiten würde, kann ich keine konkreteren Hinweise liefern.

Bernhard Geyer 5. Jul 2022 07:59

AW: MySQL und Excel-Automatismen beim Interpretieren von SQL-Statements?
 
Zitat:

Vielleicht kannst Du mit irgendwelchen "Strict Mode"s mySQL etwas in Deine Richtung dressieren. (Wobei das + von MS jetzt m.E. auch nicht DER Standard ist)
Ja. sowas wäre schön. Hatte vor Jahren in VBA lange zeit mit Fehlern verbracht da dieser nicht aktiv war.
Leider kenn ich das nicht ob es sowas gibt.

Zitat:

Ich finde einen harten Fehler grundsätzlich sympathischer als solchen impliziten Konvertierungsmist, der sich überall durchzieht und dann erst beim Jahresabschluss auffällt.
Sehe ich auch so. Deshalb auch im Titel "Excel-Automatismen".
Wer ärgert sich nicht wenn im Öffnen in Excel teschnische IDs als Zahlen oder Datum interpretiert werden und man dann erstmal wieder schauen muss wie man das weg bekommt.

Zitat:

Da ich nie freiwillig mit mySQL arbeiten würde, kann ich keine konkreteren Hinweise liefern.
MySQL geht schon. Schlimm ist eher wenn man mal wieder was mit Oracle zu tun hat...

jobo 5. Jul 2022 21:18

AW: MySQL und Excel-Automatismen beim Interpretieren von SQL-Statements?
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1508358)
Zitat:

Vielleicht kannst Du mit irgendwelchen "Strict Mode"s mySQL etwas in Deine Richtung dressieren. (Wobei das + von MS jetzt m.E. auch nicht DER Standard ist)
Ja. sowas wäre schön. Hatte vor Jahren in VBA lange zeit mit Fehlern verbracht da dieser nicht aktiv war.
Leider kenn ich das nicht ob es sowas gibt.

Zitat:

Da ich nie freiwillig mit mySQL arbeiten würde, kann ich keine konkreteren Hinweise liefern.
MySQL geht schon. Schlimm ist eher wenn man mal wieder was mit Oracle zu tun hat...

Am besten, wenn Du frei (alleine) über die DB Settings bestimmen kannst, probier mal aus, ob hilfreiche Settings dabei sind. Man kann es auch per Session einstellen.
https://dev.mysql.com/doc/refman/8.0...#sql-mode-full

Ich finde mySQL geht gar nicht, ewig keine Updates, ein Meer von altem Schrottcode im Internet*, der einfach nicht aussterben will. Gruselig.
Oracle DB ist da eher einfach nur eine Preisfrage. (Und Vertrauen darauf, dass es keine unerwartetenden Strategiewechsel gibt)


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz