Trädvy Permalänk
Medlem
Plats
Solna
Registrerad
Feb 2003

Oracle PL SQL problem

Mitt problem är:

jag har nummer som ser ut såhär i columnamn Lot_Batch_No:
215453-12-2
11225-10-2
5464644-2-10
HSJA-08-02-14

sen behöver jag matcha andra nummer från Order_No mot allting som kommer före andra bindestrecket i numren ovan.

alltså typ något liknande i sql form nedan
and Order_No = regexp_substr(.... kopiera allting fram till andra bindestrecket i Lot_Batch_No)

någon som har tips och förslag på hur man löser det?

Trädvy Permalänk
Medlem
Plats
i din garderob
Registrerad
Sep 2007

något i stil med SUBSTR(<sträng>, 1, INSTR('-')) enligt den dokumentation jag hittat.

( http://download.oracle.com/docs/cd/B28359_01/olap.111/b28126/... | http://download.oracle.com/docs/cd/B28359_01/olap.111/b28126/... )

Bilanaloger är som Volvo — varenda svenne kör med dem

Trädvy Permalänk
Medlem
Plats
Solna
Registrerad
Feb 2003

Jag tror jag kommit en bit på väg, men behöver hjälp på sista biten.

Man kan använda minus i SELECT satsen, det jag gör är att använda INSTR för att räkna ut värdet på andra '-' tecknet, sen minus 1 på det.

select Lot_Batch_No,
INSTR(Lot_Batch_No,'-',1,2)-1
from inventory_part_in_stock

Sen skulle jag behöva spara det värdet jag får och använda i villkor i where satser efter from inventory_part_in_stock.
Någon som vet hur man gör det, eller om det går?

Trädvy Permalänk
Medlem
Plats
i din garderob
Registrerad
Sep 2007

SELECT whatever AS utklippt
...
WHERE utklippt = '42'

Något sånt gissar jag..

Bilanaloger är som Volvo — varenda svenne kör med dem

Trädvy Permalänk
Medlem
Plats
Solna
Registrerad
Feb 2003

Fick inte AS att fungera, men det var fel i mina parenteser i concateneringen som ställde till det med minus tecknet i where satsen.

Efter att ha fixat det så fungerade allting som det skulle. Detta blev resultatet.

select
...
...
From ....

where

( c.Order_No || '-' || c.Line_No) = SUBSTR(d.Lot_Batch_No,1,INSTR(d.Lot_Batch_No,'-',-1,1)-1)

Tack för all hjälp!