Except Groß-/Kleinschreibung

Alsamo

Neuer Benutzer
Beiträge
2
Hallo zusammen,
ich gleiche 2 Tabellen gegeneinander ab, und möchte nur die Änderungssätze im Ergebnis sehen.
Das funktioniert mit "except" sehr gut, jedoch erkennt der Befehl nicht den Unterschied in der Groß-/Kleinschreibung.
Gibt es hierfür eine Lösung oder Alternative?

select 'abc'
except
select 'aBc'

Gruß
Alsamo
 
Werbung:
Unklar, was Du willst. Ich sehe da keine 2 Tabellen, sondern nur 2 Strings.

Code:
postgres=# select 'abc' except select 'aBc';
 ?column? 
----------
 abc
(1 row)

postgres=# select lower('abc') except select lower('aBc');
 lower 
-------
(0 rows)

postgres=#

ist es das, was Du suchst?
 
Ich glaube, der TE meint den Fall 1 von @akretschmer , nur dass bei ihm kein Ergebnis angezeigt wird.
Vielleicht steckt da eine Case Insensitive Collation dahinter. Was man vielleicht so anlegt, damit man bequem Case Insensitive suchen kann.
 
I.d.R. ist MSSQL nicht case sensitive aber das kann man setzen oder vermutlich auch gezielt erzwingen. Teste mal
Code:
SELECT spalte COLLATE Latin1_General_CS_AS FROM tabelle1
EXCEPT
SELECT spalte COLLATE Latin1_General_CS_AS FROM tabelle2
 
Vielen dank für eure Antworten.
Die Information von @ukulele hat mir weitergeholfen, das gewünschte Ergebnis zu erhalten.
Nachstehend zeige ich Beispiele für das Verhalten von "except".

-- Bsp.1: Differenzzeile wird ausgewiesen -> richtig
select 'abc' Quelle1
except
select 'abcd' Quelle2

-- Ergebnis:
-- Quelle1
-- abc
--------------------------------------------------
-- Bsp.2: Differenzzeile wird ausgewiesen -> richtig
select 'abcde' Quelle1
except
select 'abcd' Quelle2

-- Ergebnis:
-- Quelle1
-- abcde
--------------------------------------------------
-- Bsp.3: keine Differenz -> richtig
select 'abc' Quelle1
except
select 'abc' Quelle2

-- Ergebnis:
-- Quelle1
-- keine Differenz
--------------------------------------------------
-- Bsp.4: Differenz in der Groß-/Kleinschreibung
-- -> Die Defferenz wird benötigt, jedoch wird keine ausgewiesen.
select 'abc' Quelle1
except
select 'aBc' Quelle2

-- Ergebnis:
-- Quelle1
-- keine Differenz
--------------------------------------------------
-- Bsp.5: Differenz in der Groß-/Kleinschreibung
-- Lösung von "ukulele" -> Differenz wird ausgeweisen
select 'abc' COLLATE Latin1_General_CS_AS Quelle1
except
select 'aBc' COLLATE Latin1_General_CS_AS Quelle2

-- Ergebnis:
-- Quelle1
-- abc
 
Werbung:
I.d.R. ist MSSQL nicht case sensitive aber das kann man setzen oder vermutlich auch gezielt erzwingen.
Das hängt davon ab, ob der SQL Server Installateur ;-) eine Case Sensitive Collation gewählt hat, dann gilt das serverweit. Sollte man aber nicht machen. Deine Lösung ist deutlich besser und flexibler.
 
Zurück
Oben