Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: SQL: Kyselytuloksen numeroiden suodatus

Sepioilssen [16.03.2018 08:51:40]

#

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?

Grez [16.03.2018 09:36:31]

#

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.

Sepioilssen [16.03.2018 10:11:49]

#

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ä.

Sepioilssen [16.03.2018 12:20:18]

#

Kiitoksia avusta, sain onnistumaan. Tuo alempi ratkaisu toimi kun muutti substring() -> substr().

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta