Jag har oracle databas med en kolum som har en sträng med X antal tecken. Kan se ut från '84' till '3431,87,6448,28'. Alltså 2 eller 4 siffror i oändligt antal avskiljt med kommatecken. Och dessa vill jag kolla av om de matchar hela eller början(beroende på om de är 2 eller 4 siffror) på en kortare sträng som alltid är 4 siffror. Varför lagra data som en sträng? Jo de är ju en möjlighet(att då måsta ändra i 15,000 poster som har fungerat i något år). Är idnummren relaterat till någon annan tabell? Eller vad symboliserar värden? Du kan dela upp posterna med hjälp av kod. Tar inte lång tid att skriva en rutin som gör det. En SQL fråga(Mot Oracle)
Exempel:
Den längre strängen från post 1: 84,8241
Den kortare: 8284
Posten ovan skulle inte komma med i sök resultatet. Men om den längre strängen istället hade sett ut som nån av dessa så hade den kommit med:
82
8241,8284
/DanielSv: En SQL fråga(Mot Oracle)
Skapa istället en tabell med en en till många relation.Sv: En SQL fråga(Mot Oracle)
Men jag tycker vi låter oracle expterna lämna systemet som de är, och listar ut denna fråga istället.
Jag vet inte varför dom har gjort så här, men nånting bra med de borde de vara.Sv: En SQL fråga(Mot Oracle)
Du borde ju kunna göra något sådant här:
<code>
strFind = "8284"
strSQL = "SELECT * FROM TabellNamn WHERE ',' + Fältnamn + ',' Like '*," & Left(strFind, 1) & ",*' OR ',' + Fältnamn + ',' Like '*," & Left(strFind, 2) & ",*' OR ',' + Fältnamn + ',' Like '*," & Left(strFind, 3) & ",*' OR ',' + Fältnamn + ',' Like '*," & strFind & ",*'"
</code>