VALUEIN ER -funktio
VALUEIN
-funktio määrittää, vastaako määritetty syöte määritetyn luettelokohteen tiettyä arvoa. Se palauttaa totuusarvon arvon TOSI, jos määritetty syöte vastaa määritetyn lausekkeen suorittamisen tulosta vähintään yhdelle määritetyn luettelon tietueelle. Muussa tapauksessa se palauttaa totuusarvonEPÄTOSI.
Syntaksi
VALUEIN (input, list, list item expression)
Argumentit
input
: kenttä
Tietueluettelo-tyypin tietolähteen kelvollinen polku. Tämän nimikkeen arvon vastaavuus määritetään.
list
: Tietueluettelo
Tietueluettelo-tietotyypin tietolähteen kelvollinen polku.
list item expression
: Totuusarvo
Kelvollinen ehdollinen lauseke, joka joko osoittaa tai sisältää määritetyn luettelon yhden kentän, jota olisi käytettävä vastaavuuteen.
Palautusarvot
Totuusarvo
Tuloksena oleva Totuusarvo-arvo.
Käyttöhuomautukset
Yleensä VALUEIN
-funktio muunnetaan OR-ehtojoukoksi. Jos TAI-ehtojen luettelo on suuri ja SQL-lausekkeen enimmäispituus voi ylittyä, harkitse VALUEINLARGE
-funktion käyttöä.
(input = list.item1.value) OR (input = list.item2.value) OR …
Joissakin tapauksissa se voidaan kääntää tietokannan SQL-lauseessa EXISTS JOIN
-operaattoria käyttämällä.
Muistiinpano
VALUEIN
-funktion palauttamaa arvoa käytetään eri tavoin sen mukaan, käytetäänkö tätä funktiota FILTER
-toiminnon vai WHERE
-toiminnon valintaehtojen määrittämiseen.
Esimerkki 1
Mallikartoituksessa määrität Laskettu kenttä-tyypin Luettelo-tietolähteen. Tässä tietolähteessä on lauseke SPLIT ("a,b,c", ",")
.
Jos tietolähde on kutsuttaessa määritetty VALUEIN ("B", List, List.Value)
-lausekkeeksi, funktio palauttaa arvon TOSI. Tässä tapauksessa VALUEIN
-funktio muunnetaan seuraavaksi ehtojoukoksi: (("B" = "a") or ("B" = "b") or ("B" = "c"))
, jossa ("B" = "b")
on yhtä kuin TOSI.
Jos tietolähde on kutsuttaessa määritetty VALUEIN ("B", List, LEFT(List.Value, 0))
-lausekkeeksi, funktio palauttaa arvon EPÄTOSI. Tässä tapauksessa VALUEIN
-funktio muunnetaan seuraavaksi ehdoksi: ("B" = "")
ei ole yhtä kuin TOSI.
Kyseisen ehdon tekstin suurin merkkimäärä on 32 768 merkkiä. Älä tämän vuoksi luo tietolähteitä, jotka voivat ylittää suorituksen aikana tämän rajan. Jos raja ylitetään, sovellus pysähtyy ja annetaan poikkeus. Tämä tilanne voi esiintyä esimerkiksi silloin, jos tietolähteeksi on määritetty WHERE (List1, VALUEIN (List1.ID, List2, List2.ID)
ja List1- ja List2-luetteloissa on suuria määriä tietueita.
Joissakin tapauksissa VALUEIN
-funktio muunnetaan tietokantalausekkeeksi EXISTS JOIN
-operaattorin avulla. Näin tapahtuu, kun käytetään FILTER
-funktiota ja seuraavat ehdot täyttyvät:
- KYSY KYSELYÄ -asetus on poistettu käytöstä siinä
VALUEIN
-funktion tietolähteessä, joka viittaa tietueluetteloon. Tässä tietolähteessä ei käytetä suorituksen aikana mitään lisäehtoja. - Tietueluetteloon viittaavaan
VALUEIN
-funktion tietolähteeseen ei ole määritetty upotettuja lausekkeita. VALUEIN
-funktion luettelokohde viittaa määritetyn tietolähteen kenttään eikä tämän tietolähteen lausekkeeseen tai menetelmään.
Harkitse tämän vaihtoehdon käyttöä WHERE
-funktion sijaan, joka on kuvattu aiemmin tässä esimerkissä.
Esimerkki 2
Määritä seuraavat tietolähteet omassa mallimäärityksessäsi:
- Taulukon tietueet -tyypin Sisällä-tietolähde. Tämä tietolähde viittaa Intrastat-tauluun.
- Taulukon tietueet -tyypin Portti-tietolähde. Tämä tietolähde viittaa IntrastatPort-tauluun.
Kun FILTER (In, VALUEIN(In.Port, Port, Port.PortId)
-lausekkeena määritetty tietolähde kutsutaan, luodaan seuraava SQL-lauseke palauttamaan Intrastat-taulun suodatetut tietueet.
select … from Intrastat
exists join TableId from IntrastatPort
where IntrastatPort.PortId = Intrastat.Port
dataAreaId-kenttien lopullinen SQL-lauseke luodaan käyttämällä IN
-operaattoria.
Esimerkki 3
Määritä seuraavat tietolähteet omassa mallimäärityksessäsi:
- Laskettu kenttä -tyypin Le-tietolähde. Tässä tietolähteessä on lauseke
SPLIT ("DEMF,GBSI,USMF", ",")
. - Taulukon tietueet -tyypin Sisällä-tietolähde. Tämä tietolähde viittaa Intrastat-tauluun ja Yritysten väliset -vaihtoehto on otettu käyttöön.
Kun FILTER (In, VALUEIN (In.dataAreaId, Le, Le.Value)
-lausekkeena määritetty tietolähde kutsutaan, lopullinen SQL-lauseke sisältää seuraavan ehdon.
Intrastat.dataAreaId IN ('DEMF', 'GBSI', 'USMF')