Ich habe die folgende Abfrage:Hat CASE-Ausdruck alle Fälle vor der Verarbeitung ausgewertet?
SELECT
CASE
WHEN 'Sara' like '% %' THEN SUBSTRING('Sara', 1, CHARINDEX(' ', 'Sara') - 1)
ELSE 'Sara'
END AS FirstName,
CASE
WHEN 'Sara' like '% %' THEN SUBSTRING('Sara', CHARINDEX(' ', 'Sara') + 1, 8000)
ELSE ''
END AS LastName
ziemlich geradlinig - Ich teste einen Namen Split-Abfrage. Also ich das Szenario testen, wo der Name keine Leerzeichen hat und ich die folgende Ausnahme bekomme:
Ungültige Länge Parameter an die
SUBSTRING
Funktion übergeben.
Warum ist das? Sollte es nicht die erste Klausel auswerten und sofort auf die ELSE
gehen? Wie komme ich da um ..?
1) Fallausdruck, nicht Fallaussage. 2) Wahrscheinlich ist die Antwort NEIN. Zumindest nicht logisch. (Die Implementierung ist produktspezifisch.) – jarlh
Sie wissen, dass Sie die Zeichenfolge "Sara" und nicht ein Feld vergleichen, richtig? – Siyual
Warum würde es dann eine Ausnahme mit Teilzeichenfolge werfen? Ich bin etwas verwirrt. – user2124871