Onko SQL-kielessä mitään tapaa/komentoa, jolla saisin suodatettua haetun kyselyn tulosta?
Esim. jos minulla olisi haettuna jonkin tuotteen tuotenumero, kuinka voisin suodattaa haetuista numeroista pois alkupäännumeroita?
Oletetaan vaikka että:
SELECT tuotenumero FROM tuotteet;(SQL)
jolloin tulostukseen tulisi vaikka kolme haettua kohdetta: 450569, 450570, 450571.
Näistä pitäisi siis suodattaa nuo kolme ensimmäistä numeroa jolloin tulostus olisi: 569, 570, 571
Kuinka tämä onnistuisi?
Suodattaa termistä minulle tulee ensisijaiseti where tai having -rajaus mieleen, joten puhuisin ehkä mieluummin vaikka tuloksen käsittelystä tai muotoilusta.
Lyhyt vastaus: Substring
Pidempi vastaus: Se riippuu mitä SQL-kielen murretta ja versiota käytät. Esimerkiksi SQL92 standardi määrittää "substring(string [from int] [for int])" jolloin tuon mukainen tapa käyttää funktiota olisi:
SELECT substring(tuotenumero from 4) FROM tuotteet;
Tämä ei kuitenkaan ainakaan MS SQL Serverillä näytä toimivan. Sillä toimisi esim. koodi:
SELECT substring(tuotenumero,4,100) FROM tuotteet;
(tässä nyt 100 on hatusta vedetty luku, eli ottaa 4. merkistä alkaen enintään 100 merkkiä)
Eli mikä nyt sitten sinulle toimii riippuu jossain määrin mitä tietokantamoottoria käytät ja tätä asiaa et kertonut kysymyksessäsi.
Unohdin tosiaan sanoa että Oraclen kannasta on kysymys. Täytyy kokeilla noita tapoja, lähinnä nyt oli mielessä mitä kautta alan tuota kyselyä kasaamaan kun sql on vielä jonkin verran tuore tuttavuus :)
Palaan asiaan jos tulee epäselvyyksiä.
Kiitoksia avusta, sain onnistumaan. Tuo alempi ratkaisu toimi kun muutti substring() -> substr().
Aihe on jo aika vanha, joten et voi enää vastata siihen.