G
Guest
Gast
Hallo!
Seit ein paar Tagen quält mich folgendes Problem: Ich versuche, in einer Tabelle in einem MS SQL Server die Zeilen zu finden, die an einer bestimmten Stelle in einem langen Textfeld eine bestimmte Zahl enthalten.
Dazu benutze ich Abfragen wie die folgende:
Die Anfragen liefern zuverlässig leere Resultsets. Verwende ich die exakt gleichen Abfragen z. B. in WinSQL, bekomme ich Zeilen zurück.
Der Code funktioniert prinzipiell; wenn ich anstelle eines numerischen Wertes nach einem Text suche, z. B.
bekomme ich ein prall gefülltes Resultset zurück.
Ich habe diverse Variationen probiert (= statt like, Suche im ganzen Feld (ohne substring mit like '%1011234%', mit und ohne ', macht alles keinen Unterschied. Am JDBC-Treiber dürfte es auch nicht liegen; ich habe zunächst JTDS benutzt, dann den MS-Treiber (jeweils die neueste Version), um ein Treiberproblem auszuschließen.
Intensives Googeln hat leider nicht geholfen. Eine Idee wäre, daß die Sortierfolge nicht stimmt, aber einige Versuche mit COLLATE haben bisher nichts gebracht. In dem Zusammenhang wäre ich für einen Hinweis dankbar, wie ich die Sortierfolge einer bestimmten Tabellenspalte 'rauskriege.
Ich habe auch schon cast probiert, z. B.
oder
Bringt aber auch nichts.
Einige Fakten:
Server: Microsoft SQL Server, Version 09.00.2047
Treiber in WinSQL: SQLSRV32.DLL, Version 03.85.1117
JDBC-Treiber:
- JTDS, Version 1.2
- Microsoft SQL Server 2005 JDBC Driver, Version 1.2
JVM: jre1.5.0_11
Vielleicht weiß ja hier jemand weiter...
Gruß
Jens
Seit ein paar Tagen quält mich folgendes Problem: Ich versuche, in einer Tabelle in einem MS SQL Server die Zeilen zu finden, die an einer bestimmten Stelle in einem langen Textfeld eine bestimmte Zahl enthalten.
Dazu benutze ich Abfragen wie die folgende:
Code:
select * from tabelle where substring(feld_1, 37, 7) like '1011234';
Die Anfragen liefern zuverlässig leere Resultsets. Verwende ich die exakt gleichen Abfragen z. B. in WinSQL, bekomme ich Zeilen zurück.
Der Code funktioniert prinzipiell; wenn ich anstelle eines numerischen Wertes nach einem Text suche, z. B.
Code:
select * from tabelle where substring(feld_1, 4, 5) like 'Paper';
bekomme ich ein prall gefülltes Resultset zurück.
Ich habe diverse Variationen probiert (= statt like, Suche im ganzen Feld (ohne substring mit like '%1011234%', mit und ohne ', macht alles keinen Unterschied. Am JDBC-Treiber dürfte es auch nicht liegen; ich habe zunächst JTDS benutzt, dann den MS-Treiber (jeweils die neueste Version), um ein Treiberproblem auszuschließen.
Intensives Googeln hat leider nicht geholfen. Eine Idee wäre, daß die Sortierfolge nicht stimmt, aber einige Versuche mit COLLATE haben bisher nichts gebracht. In dem Zusammenhang wäre ich für einen Hinweis dankbar, wie ich die Sortierfolge einer bestimmten Tabellenspalte 'rauskriege.
Ich habe auch schon cast probiert, z. B.
Code:
SELECT * FROM tabelle WHERE CAST(SUBSTRING(feld_1, 37, 7) as bigint) = CAST('1011234' as bigint);
Code:
SELECT * FROM tabelle WHERE CAST(SUBSTRING(feld_1, 37, 7) as bigint) = CAST(1011234 as bigint);
Bringt aber auch nichts.
Einige Fakten:
Server: Microsoft SQL Server, Version 09.00.2047
Treiber in WinSQL: SQLSRV32.DLL, Version 03.85.1117
JDBC-Treiber:
- JTDS, Version 1.2
- Microsoft SQL Server 2005 JDBC Driver, Version 1.2
JVM: jre1.5.0_11
Vielleicht weiß ja hier jemand weiter...
Gruß
Jens