Select-Problem mit CHARINDEX und CONVERT

25/05/2009 - 18:59 von Jörg Eisenträger | Report spam
Hallo,
bin neu hier. Ich hoffe, Ihr könnt mir helfen. Es soll geprüft werden,
ob der Ganzzahl-Anteil einer Floatzahl in einem String vorkommt, der
mehrere Ganzzahlen, getrennt durch Komma enthalten kann.

MS SQL-Server 2005.

Die zwei Statements (177) und (178) sind für mich nachvollziehbar.
Alles deutet darauf hin, dass (177) einen String '444' zurück gibt.

(177)--> select convert(char,convert(int,444.123456));


444

1 row(s) selected


(178)--> select charindex('444','999,333,777,444,aaa');

13

1 row(s) selected


In (179) wird anstelle des gesuchten Strings '444' der Ausdruck aus
(177) eingetragen:

(179)--> select
charindex(convert(char,convert(int,444.123456)),'999,333,777,444,aaa');

0

1 row(s) selected

Warum - zum Teufel - liefert (179) den Wert 0 statt 13? Es soll 13
liefern.
Bin schon am Verzweifeln.



Gruß
Jörg
LPs auf CD brennen - so geht's: http://www.joergei.de/
E-Mail-Adresse existiert, wird aber nicht gelesen.
 

Lesen sie die antworten

#1 Gerd Haseloff
25/05/2009 - 20:35 | Warnen spam
On 25 Mai, 18:59, Jörg Eisentràger wrote:
Hallo,
bin neu hier. Ich hoffe, Ihr könnt mir helfen. Es soll geprüft werden,
ob der Ganzzahl-Anteil einer Floatzahl in einem String vorkommt, der
mehrere Ganzzahlen, getrennt durch Komma enthalten kann.

MS SQL-Server 2005.

Die zwei Statements (177) und (178) sind für mich nachvollziehbar.
Alles deutet darauf hin, dass (177) einen String '444' zurück gibt.

(177)--> select convert(char,convert(int,444.123456));


444

1 row(s) selected

(178)--> select charindex('444','999,333,777,444,aaa');

         13

1 row(s) selected

In (179) wird anstelle des gesuchten Strings '444' der Ausdruck aus
(177) eingetragen:

(179)--> select
charindex(convert(char,convert(int,444.123456)),'999,333,777,444,aaa');

          0

1 row(s) selected

Warum - zum Teufel - liefert (179) den Wert 0 statt 13? Es soll 13
liefern.
Bin schon am Verzweifeln.

Gruß
Jörg
LPs auf CD brennen - so geht's:http://www.joergei.de/
E-Mail-Adresse existiert, wird aber nicht gelesen.




Hallo Jörg,



bei mir führte diese Abfrage zu deinem gewünschten Ergebnis.

Vielleicht ist es ja das, was du suchst.


select charindex(RTRIM(convert(char,convert(int,
444.123456))),'999,333,777,444,aaa');



Gruss Gerd

Ähnliche fragen