2010-12-08 6 views
1
select substr(e.orgmessage, 40, 50) as one, 
     orgmessage as original_message 
    from table 

Das Ergebnis ist in der Spalte ist:Ich möchte String verwenden und erhalten Werte nach meinem Muster

00 02182 00363 00008 O PKR  500 01983 00319 

aber die ursprüngliche Zeichenfolge ist:

09:22:12 CASH COUNTERS(C) PKR  1000 02182 00363 00008 O PKR  500 01983 00319 00315 O ***  0 00000 00000 00000 N ***  0 00000 00000 00000 N 

Ich bin nicht in der Lage zu bekomme Teilzeichenfolge, um zurückzugeben was ich will. Ich möchte Werte wie 500 und 1000. Der Datentyp des Feldes ist VARCHAR2(1000 Byte).

+0

Was genau ist Ihre Frage hier? Wäre es so einfach wie in der Dokumentation für substr, wo die Parameter sind (source_string, position, length). Oder ist es komplexer? Außerdem könnte es hilfreich sein, den Code auszuwählen und die Codetaste im Editor (101010) zu drücken, um ihn lesbarer zu machen. –

Antwort

0

Verwenden Sie INSTR, um die Position der Teilzeichenfolge in der Quellzeichenfolge zu finden, und verwenden Sie dann substr, um sie von dieser Position aus zu analysieren.

0

Wenn Ihre Saite jedes Mal einem regelmäßigen Muster folgt, sollten Sie Ihre 2 Werte leicht herausziehen können. Die 500 und 1000 in Ihrer Beispielzeichenfolge folgen den PKR-Indikatoren. Wenn die Zeichenfolge regulär ist, beginnen die Werte um Zeichen 33 und 69 und führen jeweils 9 Zeichen aus. Mit, dass wir verwenden können:

select substr(txt, 33, 9) value1, 
     substr(txt, 69, 9) value2 
    from (select '09:22:12 CASH COUNTERS(C) PKR  1000 02182 00363 00008 O PKR  500 01983 00319 00315 O ***  0 00000 00000 00000 N ***  0 00000 00000 00000 N' txt 
      from dual 
     ) 

, die zurückgibt:

VALUE1 VALUE2 
--------- --------- 
    1000  500 

1 row selected. 

Wenn die Zeichenfolge nicht regelmäßig ist, und Sie müssen die Zeichenfolge an jedem PKR spalten und dann ziehen Sie die 9 Zeichen nach dem PKR, Sie müssen mehr SQL verwenden als nur einen einfachen Teilstr.

Verwandte Themen