GQL-pikaopas

Tämä artikkeli on lyhyt viite GQL:n (Graph Query Language) syntaksille Microsoft Fabric -kaaviolle. Käytä sitä syntaksin ja oletusten palauttamiseen. Päästä päähän -selitys löytyy GQL:n kielioppaasta; jokainen osio linkittää siihen kohdennettuun lähteeseen, joka omistaa täydelliset tiedot.

Note

Tässä artikkelissa käytetään ensisijaisesti yhteisöpalveluesimerkin kaaviotietojoukkoa. Se tarjoaa myös muutamia esimerkkejä, joissa käytetään kaavion opetusohjelman Adventure Works -tietojoukkoa.

Kyselyn rakenne

GQL-kyselyt käyttävät lausekkeita, jotka määrittävät, mitä tietoja kaaviosta saadaan, miten niitä käsitellään ja miten tulokset näytetään. Jokaisella lausekkeella on tietty tarkoitus, ja ne yhdessä luovat lineaarisen putken, joka vastaa kaavion tietoja ja muuntaa sen vaiheittain.

Tyypillinen kyselytyönkulku:
GQL-kysely käynnistyy yleensä määrittämällä kaaviokuvion, joka vastaa toisiaan. Sen jälkeen se käyttää valinnaisia lausekkeita muuttujien luomiseen, suodattamiseen, lajitteluun, sivutukseen ja tulostuloksiin.

Esimerkki:

MATCH (n:Person)-[:knows]->(m:Person) 
LET fullName = n.firstName || ' ' || n.lastName 
FILTER m.gender = 'female' 
ORDER BY fullName ASC 
OFFSET 10
LIMIT 5 
RETURN fullName, m.firstName

Lausunnon kirjoitus:

Tärkeää

Lauseet muodostavat järjestetyn putken, eikä niitä voi järjestellä mielivaltaisesti uudelleen. Katso artikkelista tämänhetkiset rajoitukset.

  • MATCH – Määritä etsittävät kaaviomallit.
  • LET – Määritä muuttujia lausekkeista.
  • FOR – Laajenna lista riveihin.
  • CALL – Suorita rivin sisäinen alikysely ja lisää sen palautetut sarakkeet.
  • FILTER – Säilytä ehtoja vastaavat rivit.
  • WHEN – Reititä jokainen syöterivi ensimmäiseen vastaavaan ehdolliseen haaraan.
  • ORDER BY – Lajittele tulokset.
  • OFFSET – Ohita monta riviä.
  • LIMIT – Rajoita rivien määrää.
  • RETURN – Tulosta lopulliset tulokset.
  • NEXT – Aloita uusi kyselyvaihe käyttämällä edellisen vaiheen palauttamia sarakkeita.

Jokainen lauseke perustuu edelliseen, joten voit asteittain tarkentaa ja muokata kyselyn tulosta. Käytä UNION, UNION DISTINCT, tai UNION ALL yhdistääksesi täydelliset kyselylohkot. Katso lisätietoja kustakin lausekkeesta seuraavista osioista.

Kyselyn lausekkeet

TULITIKKU

Etsi kaaviokuvioita tiedoistasi.

Syntaksi:

MATCH <graph pattern> [ WHERE <predicate> ]
...

Esimerkki:

MATCH (n:Person)-[:knows]-(m:Person) WHERE n.birthday > 2000
RETURN *

Lisätietoja lausekkeesta on MATCHkohdassa Kaaviomallit.

ANTAA

Luo muuttujia lausekkeiden avulla.

Syntaksi:

LET <variable> = <expression>, <variable> = <expression>, ...
...

Esimerkki:

MATCH (n:Person)
LET fullName = n.firstName || ' ' || n.lastName
RETURN fullName

Lisätietoja lausekkeesta on LETGQL-kielioppaassa.

VASTAANOTTAJA

Laajentaa listan riveihin ja palauttaa halutessasi jokaisen alkion sijainnin.

Syntaksi:

FOR <variable> IN <list_expression>
  [ WITH OFFSET <offset_variable> | WITH ORDINALITY <ordinality_variable> ]
...

Esimerkki:

FOR value IN [10, 20] WITH OFFSET index
RETURN value, index

WITH OFFSETalkaa .0 WITH ORDINALITYalkaa .1

Lisätietoja lausekkeesta on FORGQL-kielioppaassa.

SOITA

Suorittaa inline-alikyselyn jokaiselle syöteriville. Muuttujat, jotka ovat jo laajuudessa, ovat implisiittisesti saatavilla alikyselyssä.

Syntaksi:

[ OPTIONAL ] CALL {
  <query statements>
  RETURN <columns>
}
...

Alikyselyn sisällä luoduista muuttujista vain sen lopullisesta RETURN lauseesta peräisin olevat sarakkeet tulevat saataville sen ulkopuolella. Tavallinen CALL pudottaa ulomman rivin, kun alikysely ei palauta rivejä, ja kertoi sen, kun alikysely palauttaa useita rivejä. OPTIONAL CALL säilyttää ulomman rivin alikyselysarakkeilla NULL , kun alikysely ei palauta rivejä.

MATCH (p:Person)
CALL {
  MATCH (p)-[:knows]->(friend:Person)
  RETURN count(*) AS friendCount
}
RETURN p.firstName, friendCount

Lisätietoja inline-alikyselyistä löytyy GQL-kielioppaasta.

FILTER

Säilyttää ehtoja vastaavat rivit.

Syntaksi:

FILTER [ WHERE ] <predicate>
...

Esimerkki:

MATCH (n:Person)-[:knows]->(m:Person)
FILTER WHERE n.birthday > m.birthday
RETURN *

Lisätietoja lausekkeesta on FILTERGQL-kielioppaassa.

JÄRJESTÄ

Lajittelee tulokset.

Syntaksi:

ORDER BY <expression> [ ASC | DESC ] [ NULLS FIRST | NULLS LAST ], ...
...

Esimerkki:

MATCH (n:Person)
RETURN *
ORDER BY n.lastName ASC NULLS LAST, n.firstName ASC

Nollasijoitus on riippumaton lajittelusuunnasta. Oletus on NULLS LAST sekä ASC että DESC; määrittele NULLS FIRST , että nollaarvot sijoitetaan ei-nollaarvojen eteen.

Tärkeää

Pyydetty rivien järjestys on taattu, että se pysyy voimassa heti edellisen ORDER BY lauseen jälkeen. Mitkään seuraavat lausekkeet (jos ne ovat olemassa) eivät varmasti säilytä mitään tällaista järjestystä.

Lisätietoja lausekkeesta on ORDER BYGQL-kielioppaassa.

SIIRTYMÄ/RAJA

Ohita rivit ja rajoita tulosten määrää.

Syntaksi:

OFFSET <offset> [ LIMIT <limit> ]
LIMIT <limit>
...

Esimerkki:

MATCH (n:Person)
ORDER BY n.birthday
OFFSET 10 LIMIT 20
RETURN n.firstName || ' ' || n.lastName AS name, n.birthday

Lisätietoja - ja OFFSET -LIMITlausekkeista on GQL-kielioppaassa.

PALUU

Tulosta lopulliset tulokset.

Syntaksi:

RETURN [ DISTINCT ] <expression> [ AS <alias> ], ...

Esimerkki:

MATCH (n:Person)
RETURN n.firstName, n.lastName

Lisätietoja lausekkeesta on RETURNGQL-kielioppaassa.

SEURAAVA

Aloittaa uusi kyselyvaihe. Vain edellisen vaiheen palautetut sarakkeet ovat käytettävissä .NEXT

Syntaksi:

<query stage>
RETURN <columns>
NEXT
<query stage>

Esimerkki:

RETURN 1 AS value
NEXT
RETURN value + 1 AS nextValue

Kummassakin vaiheessa voi olla kyselylohkojen yhdiste. Yhdiste arvioidaan tässä vaiheessa ennen kuin sen ulostulo ylittää NEXT rajan.

Lisätietoja NEXTaiheesta löytyy GQL:n kielioppaasta.

Ehdolliset lausekkeet

Reitittää jokaisen syöterivin ensimmäiseen WHEN haaraan, jonka predikaatti arvostetaan .TRUE

Syntaksi:

WHEN <predicate> THEN <linear query statement or { query statements }>
[ WHEN <predicate> THEN <linear query statement or { query statements }> ... ]
[ ELSE <linear query statement or { query statements }> ]

Predikaattien täytyy olla Boolen ja ne arvioidaan järjestyksessä. FALSE ja UNKNOWN putoavat seuraavaan haaraan. Jos mikään haara ei ELSEtäsmää eikä sitä ole, syöterivi jätetään pois. Ensimmäisen ottelun jälkeiset predikaatit ja valitsemattomat haararyhmät eivät ole arvioitavissa.

RETURN 'Alice' AS name, 19900101u AS birthday
NEXT
WHEN birthday < 20000101u THEN
  RETURN name, 'Before 2000' AS era
ELSE
  RETURN name, '2000 or later' AS era

Kaikkien haarojen on palautettava samat sarakkeennimet, joissa on yhteensopivat tietotyypit. Sulje oksa oikomistukiin, kun siinä on sisäkkäinen toimenpide.

Lisätietoja löytyy kohdasta Ehdolliset lauseet.

UNION

Yhdistää täydellisten kyselylohkojen tuloksen.

Syntaksi:

<query block>
UNION [ DISTINCT | ALL ]
<query block>

Paljasta UNION ja UNION DISTINCT poista päällekkäiset rivit. UNION ALL säilyttää päällekkäiset rivit. Jokaisen kyselylohkon on palautettava sama sarakkeennimien joukko yhteensopivilla tietotyypeillä.

Lisätietoja ammattiliitoista löytyy GQL:n kielioppaasta.

Kaaviomallit

Kaaviomallit kuvaavat kaavion rakennetta, joka vastaa toisiaan.

Solmumallit

Kaaviotietokannoissa voit käyttää solmuja edustamaan entiteettejä, kuten henkilöitä, tuotteita tai paikkoja.

Solmumallit kuvaavat solmujen vastaavuutta kaaviossa. Voit suodattaa otsikon mukaan tai sitoa muuttujia.

(n)              -- Any node
(n:Person)       -- Node with Person label  
(n:City&Place)   -- Node with City AND Place label
(:Person)        -- Person node, don't bind variable

Saat lisätietoja solmumalleista Graph-malleista.

Reunakuvioita

Reunakuviot määrittävät solmujen väliset yhteydet, mukaan lukien suunnan ja reunan tyypin. Kaaviotietokannoissa reuna edustaa kahden solmun välistä yhteyttä tai suhdetta.

<-[e]-             -- Incoming edge
-[e]->             -- Outgoing edge
-[e]-              -- Any edge
-[e:knows]->       -- Edge with label ("relationship type")
-[e:knows|likes]-> -- Edges with different labels
-[:knows]->        -- :knows edge, don't bind variable

Lisätietoja reunakuvioista on artikkelissa Kaaviomallit.

Otsikkolausekkeet

Otsikkolausekkeiden avulla voit yhdistää solmut tiettyihin otsikkoyhdistelmiin käyttämällä loogisia operaattoreita.

:Person&Company                  -- Both Person AND Company labels
:Person|Company                  -- Person OR Company labels
:!Company                        -- NOT Company label
:(Person|!Company)&Active        -- Complex expressions with parentheses

Katso lisätietoja otsikkolausekkeista Graph-malleista.

Polkumallit

Polkumallit kuvaavat läpikulkuja kaaviossa, mukaan lukien humalan määrät ja muuttujan sidonnat.

(a)-[:knows|likes]->{1,3}(b)        -- 1-3 hops via knows/likes
p=()-[:knows]->()                   -- Bind a path variable
MATCH REPEATABLE ELEMENTS (a)->(b)  -- Explicit default match mode
MATCH DIFFERENT EDGES (a)->(b), (a)->(c)
MATCH ALL TRAIL (a)->{1,4}(b)       -- Every edge-unique path
MATCH p = ANY SHORTEST (a)->{1,4}(b) -- One shortest path per endpoint pair

WALK on oletuspolkutila ja sallii toistuvat solmut ja reunat. TRAIL estää toistuvat reunat. SIMPLE estää toistuvat solmut lukuun ottamatta sulkeutuvaa ensimmäisestä viimeiseen sykliä, ja ACYCLIC estää kaikki toistuvat solmut. Molemmat solmukohtaiset tilat estävät myös toistuvat reunat, koska reunojen uudelleenkäyttö toistaisi päätepisteiden solmut. ALL on oletuspolkuhaku. ANY SHORTEST palauttaa yhden lyhimmän polun jokaiselle lähde-kohde-parille eikä valitse deterministisesti sidottujen polkujen joukosta.

Tuettuja kvanttoreita ovat kiinteä {n}, rajoitettu {m,n} ja {,n}, sekä rajoittamattomat {m,}, *, ja +. Rajoittamattomia ALL WALK kuvioita ei tueta; käytä päätepolkutilaa. Rajoittamattomalla ANY SHORTEST WALK on lisärajoituksia muotoon ja polkuarvoon. Lisätietoja löytyy GQL:n graafikuvioista.

Katso lisätietoja polkukuvioista Graph-malleista.

Useita kuvioita

Käytä useita kuvioita monimutkaisten nonlinear-kaaviorakenteiden vastaamiseen yhdessä kyselyssä.

(a)->(b), (a)->(c)               -- Multiple edges from same node
(a)->(b)<-(c), (b)->(d)          -- Nonlinear structures

Jos haluat lisätietoja useista malleista, tutustu Graph-malleihin.

Arvot ja arvotyypit

Perustyypit

Perustyypit ovat primitiivisiä tietoarvoja, kuten merkkijonoja, lukuja, totuusarvoja ja päivämäärä- ja aika-arvoja.

STRING           -- 'hello', "world"
INT64            -- 42, -17
FLOAT64          -- 3.14, -2.5e10, -17d
BOOL             -- TRUE, FALSE, UNKNOWN
ZONED DATETIME   -- ZONED_DATETIME('2023-01-15T10:30:00Z')

Tai-suffiksi dD muodostaa likimääräisen FLOAT64 literaalin. Eksponentti ilman suffiksia luo FLOAT64 myös arvon. Ja fF kirjaimelliset päätteet eivät tällä hetkellä ole tuettuja.

Lisätietoja perustyypeistä on artikkelissa GQL-arvot ja -arvotyypit.

Viitearvotyypit

Viitearvotyypit ovat solmuja ja reunoja, joita käytetään arvoina kyselyissä.

NODE             -- Node reference values
EDGE             -- Edge reference values

Lisätietoja viitearvotyypeistä on artikkelissa GQL-arvot ja -arvotyypit.

Kokoelmatyypit

Kokoelmatyypit ryhmittelevät useita arvoja, kuten luetteloita ja polkuja.

LIST<INT64>      -- [1, 2, 3]
LIST<STRING>     -- ['a', 'b', 'c']
PATH             -- Path values

Lisätietoja kokoelman tyypeistä on artikkelissa GQL-arvot ja -arvotyypit.

Materiaali- ja nollatyypit

Jokainen arvotyyppi on joko tyhjäarvoja salliva (sisältää tyhjäarvon) tai materiaalin (jättää sen pois). Oletusarvoisesti tyypit ovat tyhjäarvoja sallivia, ellet nimenomaisesti määritä - arvoa NOT NULL.

STRING NOT NULL  -- Material (Non-nullable) string type
INT64            -- Nullable (default) integer type

Lausekkeet ja operaattorit

Ehdollinen

Yksinkertaiset CASE lausekkeet vertaavat yhtä lauseketta yhdellä tai useammalla arvolla.

CASE expr WHEN val THEN val ELSE val END -- Simple CASE
NULLIF(a, b)                           -- NULL if a = b

Haetut CASE WHEN <predicate> ilmaisut eivät ole tuettuja. Käytä ehdollista lausetta reitittämään rivejä predikaattien perusteella.

Lisätietoja ehdollisista lausekkeista on artikkelissa GQL-lausekkeet ja -funktiot.

Vertailu

Vertailuoperaattorit vertaavat arvoja ja tarkistavat yhtäläisyys-, järjestys- tai tyhjäarvot.

=, <>, <, <=, >, >=              -- Standard comparison
IS NULL, IS NOT NULL             -- Null checks

Lisätietoja vertailupredikaateista on artikkelissa GQL-lausekkeet ja -funktiot.

Looginen

Loogiset operaattorit yhdistävät tai negatiiviset totuusarvo-ehdot kyselyissä.

AND, OR, NOT, XOR               -- Boolean logic

Lisätietoja loogisista lausekkeista on artikkelissa GQL-lausekkeet ja -funktiot.

OLEMASSA

Testaa, palauttaako proseduurimuodon alikysely vähintään yhden rivin.

EXISTS {
  MATCH (p)-[:knows]->(friend:Person)
  RETURN friend
}

EXISTS palauttaa ei-nollaarvoisen Boolen arvon. Testataan NOT EXISTS , ettei alikysely palauta rivejä. Voit käyttää tulosta muodossa WHERE tai FILTER, LET, , ORDER BYRETURN, ja aggregoida suodatin- tai lähdelausekkeita. EXISTS ei ole tuettu listan predikaattisuodattimessa.

Tärkeää

Pelkästään graafikuviomuotoja kuten EXISTS { (p)-[:knows]->(friend) } ja EXISTS ((p)-[:knows]->(friend)) ei tueta. Käytä menettelylomaketta, kuten MATCH edellisessä esimerkissä on esitetty.

Varoitus

Ryhmittelemätön aggregaatti, kuten esimerkiksi RETURN count(*) , palauttaa yhden rivin, vaikka mikään kuvio ei täsmää. Koska EXISTS rivien testit arvioivat muotoa .TRUE

Lisätietoja EXISTSaiheesta löytyy kohdasta Olemassaolon alikyselyt.

Aritmetiikka

Aritmeettiset operaattorit suorittavat laskutoimituksia luvuille.

+, -, *, /                       -- Basic arithmetic operations
1.00m / 8.00m                    -- Exact result: 0.1250m

Lisätietoja aritmeettisista lausekkeista on artikkelissa GQL-lausekkeet ja -funktiot.

Merkkijonomallit

Merkkijonokuvion predikaatit vastaavat merkkijonojen alimerkkijonoja, etuliitteitä tai jälkiliitteitä.

n.firstName CONTAINS 'John'          -- Has substring
n.browserUsed STARTS WITH 'Chrome'   -- Starts with prefix
n.locationIP ENDS WITH '.1'          -- Ends with suffix
MSFT.REGEXP_LIKE(n.firstName, '^jo', 'i') -- RE2 regular expression

Lisätietoja merkkijonomallipredikaateista on artikkelissa GQL-lausekkeet ja -funktiot.

Luettelotoiminnot

Luettelotoiminnot testaavat jäsenyyttä, käyttöoikeuselementtejä ja mittariluettelon pituutta.

n.gender IN ['male', 'female']    -- Membership test
n.tags[0]                        -- First element
size(n.tags)                     -- List length
ALL(x IN n.tags WHERE x <> '')   -- Every element matches
ANY(x IN n.tags WHERE x = 'gql') -- At least one element matches
NONE(x IN n.tags WHERE x = '')   -- No element matches
SINGLE(x IN n.tags WHERE x = 'gql') -- Exactly one element matches

Listapredikaattifunktiot palauttavat TRUE, FALSE, tai UNKNOWN suodattimen tulosten mukaan. Tyhjälle listalle ALL , ja NONE return TRUE, while ANY ja SINGLE return FALSE. Null-lähdeluettelo palauttaa UNKNOWN.

Elementtisidonta on paikallista suodattimelle ja voi varjostaa ulkoista muuttujaa. Aggregaatit kyseisen paikallisen sidonnan yli ja EXISTS suodattimen sisällä olevat alikyselyt eivät ole tuettuja.

Lisätietoja löytyy kohdasta Lista predikaattifunktiot.

Ominaisuuden käyttö

Ominaisuuden käyttö hakee ominaisuuden arvon solmusta tai reunasta.

n.firstName                      -- Property access

Lisätietoja ominaisuuden käyttöoikeudesta on artikkelissa GQL-lausekkeet ja -funktiot.

Funktiot

Käytä sisäänrakennettuja funktioita arvojen muuntamiseen, graafielementtien tarkasteluun ja rivien aggregointiin.

Numeeriset funktiot

Numeeriset funktiot laskevat numeerisia arvoja tai tuottavat kokonaislukuvälejä.

abs(value)                       -- Absolute value; preserves the numeric type
power(base, exponent)            -- Exponentiation; returns DOUBLE
sin(radians), cos(radians)       -- Trigonometric functions
asin(value), acos(value)         -- Inverse functions; value must be in [-1, 1]
degrees(radians)                 -- Convert radians to degrees
radians(degrees)                 -- Convert degrees to radians
range(start, end)                -- Integer range with step 1
range(start, end, step)          -- Integer range with a nonzero step

Muita tuettuja trigonometrisiä funktioita ovat TAN, COT, ATAN, SINHCOSH, , ja TANH. Paitsi ABS ja RANGE, nämä numeeriset funktiot palauttavat DOUBLE.

Lue lisää numeerisista funktioista GQL-lausekkeissa ja funktioissa.

Koostefunktiot

Koostefunktiot laskevat yhteenvetoarvot riviryhmille (pystysuuntainen koostaminen) tai ryhmäluettelon elementeille (vaakasuuntainen koostaminen).

count(*)                         -- Count all rows
count(expr)                      -- Count non-null values
sum(p.birthday)                  -- Sum values
avg(p.birthday)                  -- Average
min(p.birthday), max(p.birthday) -- Minimum and maximum values
collect_list(p.firstName)        -- Collect inputs, including nulls
collect_one(p.firstName)         -- Select one non-null value
collect_elements(p.roles)        -- Concatenate list-valued inputs
count(DISTINCT expr)             -- Remove duplicate expression values
count(*) FILTER (WHERE predicate LIMIT 10) -- Filter and limit this aggregate

Ilman sarakkeiden ryhmittelyä aggregoitu kysely ilman syöterivejä palauttaa 0 , COUNTtyhjän listan ja COLLECT_LISTCOLLECT_ELEMENTS, ja nullin , SUMAVG, MINMAX, , ja .COLLECT_ONE Ryhmälistaargumentti tekee aggregaatista vaakasuuntaisen.

Lue lisätietoja koostefunktioista GQL-lausekkeissa ja -funktioissa.

Merkkijono-funktiot

Merkkijonofunktioiden avulla voit käsitellä ja analysoida merkkijonoarvoja.

char_length(s)                   -- String length
upper(s), lower(s)               -- Unicode case mapping
casefold(s)                      -- Unicode caseless form
normalize(s)                     -- Normalize a string to NFC
normalize(s, NFD)                -- Normalize a string to NFD
trim(s)                          -- Trim spaces
trim(leading '_' from s)         -- Trim one custom byte
string_join(list)                -- Join with ", "
string_join(list, delimiter)     -- Join with a custom delimiter
MSFT.REGEXP_COUNT(s, pattern)    -- Count RE2 matches
MSFT.REGEXP_INSTR(s, pattern)    -- Find a zero-based match position
MSFT.REGEXP_SUBSTR(s, pattern)   -- Return matching text
MSFT.REGEXP_REPLACE(s, pattern, replacement) -- Replace matches

Regex-kuviot, korvaukset ja vaihtoehdot täytyy olla kirjaimellisia. Allekirjoituksista, lipuista ja null-käyttäytymisestä katso Merkkijonofunktiot.

Luettelotoiminnot

Luettelofunktioiden avulla voit käsitellä luetteloita, kuten pituuden tai rajauksen koon tarkistusta.

size(list)                       -- List length
trim(list, n)                    -- Trim a list to at most n elements

Katso lisätietoja luettelofunktioista artikkelista GQL-lausekkeet ja -funktiot.

Kaavion funktiot

Kaaviofunktioiden avulla saat tietoja solmuista, poluista ja reunuksista.

labels(node)                     -- Get node labels
element_id(node_or_edge)         -- Get an opaque element identifier
nodes(path)                      -- Get path nodes
edges(path)                      -- Get path edges
elements(path)                   -- Get all path nodes and edges
path_length(path)                -- Get number of edges in a path

Katso lisätietoja kaaviofunktioista artikkelista GQL-lausekkeet ja -funktiot.

Ajalliset funktiot

Ajallisten funktioiden avulla voit käsitellä päivämäärä- ja aika-arvoja.

CURRENT_TIMESTAMP                -- Get the current zoned datetime
ZONED_DATETIME(string)           -- Parse an ISO 8601 zoned datetime
DURATION(string)                 -- Parse an ISO 8601 day-time duration

Katso lisätietoja aikafunktioista artikkelista GQL-lausekkeet ja -funktiot.

Yleiset funktiot

Yleisillä funktioilla voit käsitellä tietoja yleisillä tavoilla.

coalesce(expr1, expr2, ...)    -- Get the first non-null value
to_json_string(value)          -- Convert value to JSON string
nullif(a, b)                   -- NULL if a = b, else a

Katso lisätietoja yleisistä funktioista artikkelista GQL-lausekkeet ja -funktiot.

Tehtäväkeskeisiä esimerkkejä

Käytä ohjeartikkeleita, kun tarvitset täydellisiä, valmiita mukautettavia kyselymalleja: