Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SELECT * FROM … WHERE LIKE '%SONDERZEICHEN%' (https://www.delphipraxis.net/103492-select-%2A-%85-where-like-sonderzeichen.html)

Bernhard Geyer 17. Nov 2007 06:41

Re: SELECT * FROM … WHERE LIKE '%SONDERZEICHEN%'
 
Zitat:

Zitat von alzaimar
SQL-Code:
select cast ('³' as int)
Ergibt '3'.

SQL-Code:
select charindex ('³','x123')
Ergibt '4'.

Da denke ich das Aufgrund der eingestellten Collation/Charset (Ich glaube bim MS SQL Server müssten man nach Sortierung suchen) einfach die Hochstellung eines Zeichens für like-Abfragen, Sortierung etc. einfach als irrelevant ignoriert wird. Wenn man dies auch unterscheiden will müssten man u.U. den passenden entsprechende Sortierungnamen mit "xxx_bin" ausprobieren (Genauen Namen könnte ich erst Montags heraussuchen).

PaulJr 17. Nov 2007 11:30

Re: SELECT * FROM … WHERE LIKE '%SONDERZEICHEN%'
 
Also noch einmal für besseres Verständnis:

Konvertierung: Es handelt sich hier um ca. 300 SQL-Tabellen und unzähligen Spalten des Datentyps VARCHAR.

Es gilt verschiedene Sonderzeichen aufzuspüren und dann diese durch entsprechende Maßnahmen zu ersetzen.

Liefert ein Befehl, wie z.B. dieser:

SELECT KUNDEN FROM KUNDE WHERE KUNDEN LIKE '%³%'

eine Datenmenge zurück, wird angenommen, dass diese Spalte behandelt werden muss.

Es reicht schon, wenn ein Kunde ‘BLABLA300‘ heißt um ein falsches Ergebnis
zu bekommen (da er eine 3 enthält).

Natürlich es werden alle VARCHAR Felder in einer Tabelle auf einmal abgefragt.

Ich möchte hier also NICHT über meine Vorgehensweise Diskutieren sondern
viel mehr ein SQL-Befehl herausfinden, der genau diese Ergebnisse zurückliefet
die an dieser Stelle zu erwarten wären:

Ist in einer Spalte kein Sonderzeichen drin, wie z.B. dieser: '³' ,

dann sollte die Ergebnis-Datenmenge auch leer sein.


Viele Grüße
PaulJr

NormanNG 17. Nov 2007 11:49

Re: SELECT * FROM … WHERE LIKE '%SONDERZEICHEN%'
 
Hi,

in MSSQL hilft evtl. eine passende Collation direkt anzugeben:
SQL-Code:
SELECT KUNDEN FROM KUNDE WHERE KUNDEN LIKE '%³%' collate sql_latin1_general_cp1_ci_as

Jelly 17. Nov 2007 12:03

Re: SELECT * FROM … WHERE LIKE '%SONDERZEICHEN%'
 
Wenn ich über den Query Analyzer auf eine MSSQL 2000 Datenbank zugreifen, ergibt bei mir der Befehl von Bernard
SQL-Code:
select cast ('³' as int)
die Fehlermeldung
Code:
Server: Msg 245, Level 16, State 1, Line 1
Syntax error converting the varchar value '³' to a column of data type int.
Es liegt also wohl nicht am Query Analyzer.

PaulJr 17. Nov 2007 12:16

Re: SELECT * FROM … WHERE LIKE '%SONDERZEICHEN%'
 
Hallo Norman, :???:

als ich bin echt beeindruckt und dazu sage ich nur:

Wha wha we wha

Wunderbar und DANKE !!! :hello:

Natürlich, dass ist die Lösung für mein Problem… :coder:

Viele Grüße und Danke auch an Bernhard und Soulies…

PaulJr.

PaulJr 17. Nov 2007 12:23

Re: SELECT * FROM … WHERE LIKE '%SONDERZEICHEN%'
 
Hallo Jelly, :???:

natürlich Query Analyzer ist und war hier unschuldig.

Im Übrigem dieses Befehl geht z.B. so:

SELECT CAST(SPALTE as Datentyp) FROM Tabelle

also z.B.:

SELECT CAST(BZL as VARCHAR) FROM BLZBANK

Viele Grüße

PaulJr.

Jelly 17. Nov 2007 12:28

Re: SELECT * FROM … WHERE LIKE '%SONDERZEICHEN%'
 
Zitat:

Zitat von PaulJr
Im Übrigem dieses Befehl geht z.B. so:

SELECT CAST(SPALTE as Datentyp) FROM Tabelle

Was willst du mir damit sagen :gruebel:

PaulJr 17. Nov 2007 12:30

Re: SELECT * FROM … WHERE LIKE '%SONDERZEICHEN%'
 
Sorry Jelly,

ich hab Dich falsch verstanden... vergieß es... (habe nicht genau nachgelesne... sorry)

Viele Grüße

PaulJr

PaulJr 17. Nov 2007 12:37

Re: SELECT * FROM … WHERE LIKE '%SONDERZEICHEN%'
 
Also noch einmal, und diesmal hoffe ich ohne Schreibfehler:
__________________________________________________ __________


Hallo Norman, :???:


also ich bin echt beeindruckt und dazu sage ich nur:


Wha wha we wha


Wunderbar und DANKE !!! :hello:


Natürlich, dass das die Lösung für mein Problem ist…!!!


Viele Grüße und Danke auch an Bernhard und Soulies…

PaulJr.

mashutu 17. Nov 2007 15:17

Re: SELECT * FROM … WHERE LIKE '%SONDERZEICHEN%'
 
Zitat:

Zitat von PaulJr
SELECT * FROM … WHERE LIKE '%SONDERZEICHEN%'
[...]
Die Ergebnisse sind hier deswegen überraschend, da jeder Datensatz mit BLZ die eine „normale“ ‘3‘ enthält kommt als Ergebnis zurück (Das BLZ Feld ist vom Typ VARCHAR ).

Hmm, habe hier gerade kein MSSQL am Laufen (muesste das am Montag mal in der Firma testen.
Denke aber dass Du vermutlich keine Angabe bei der Sortierung gemacht hast, als Du die DB angelegt hast - oder eben eine Einstellung in der Sonderzeichen auf regulaere Zeichen gemappt werden.
Also é auf E und eben die ³ auf 3.
Daher tippe ich auf einen confg-fehler bei der Datenbank


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:18 Uhr.
Seite 2 von 3     12 3      

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