Methods
SQL Methods are similar to SQL Functions but they apply to values. In Object-Oriented paradigm they are called "methods", as functions related to a type. So what’s the difference between a function and a method?
This is a SQL Function:
SELECT FROM sum( salary ) FROM employee
This is a SQL method:
SELECT FROM salary.asJSON() FROM employee
As you can see the method is executed against a field/value. Methods can receive parameters, like functions. You can concatenate N operators in sequence.
| methods are case-insensitive. |
Method Reference
[]
Execute an expression against the item. An item can be a multi-value object like a map, a list, an array or a document. For documents and maps, the item must be a string. For lists and arrays, the index is a number.
Syntax: <value>[<expression>]
Applies to the following types:
-
document,
-
map,
-
list,
-
array
Examples
Get the item with key "phone" in a map:
SELECT FROM Profile WHERE '+39' IN contacts[phone].left(3)
Get the first 10 tags of posts:
SELECT FROM tags[0...9] FROM Posts
append()
Appends one or more string to the result.
Syntax: <value>.append(<value>[,<value>]*)
Applies to the following types:
-
string
Examples
SELECT name.append(' ').append(surname) FROM Employee
asBoolean()
Transforms the field into a Boolean type.
If the origin type is a string, then "true" (or "TRUE", "True", …) means TRUE,
all other strings transform to FALSE.
If it is a number type, then 0 means FALSE while all other numbers transform to TRUE.
In case a NULL is passed then NULL is also returned.
Syntax: <value>.asBoolean()
Applies to the following types:
-
string,
-
short,
-
int,
-
long
Examples
SELECT FROM Users WHERE online.asBoolean() = true
asByte()
Transforms the field into a Byte type.
Syntax: <value>.asByte()
Applies to the following types:
-
short,
-
int,
-
long,
-
float,
-
double
asDate()
Transforms the field into a Date type.
Syntax: <value>.asDate([<format>])
Where:
-
format, optional, is the format of the date to convert if the value is a string
Applies to the following types:
-
string,
-
long
Examples
Returns all the records where time is before the year 2010:
SELECT FROM Log WHERE time.asDate() < '01-01-2010'
asDateTime()
Transforms the field into a Date type but parsing also the time information.
Syntax: <value>.asDateTime([<format>])
Where:
-
format, optional, is the format of the date to convert if the value is a string
Applies to the following types:
-
string,
-
long
Examples
Time is stored as long type measuring milliseconds since a particular day. Returns all the records where time is before the year 2010:
SELECT FROM Log WHERE time.asDateTime() < '01-01-2010 00:00:00'
This example returns the dates stored as strings following the ISO 8601 format:
SELECT timeAsString.asDateTime("yyyy-MM-dd'T'HH:mm:ss'Z'") AS time FROM Log
asDecimal()
Transforms the field into an Decimal type. Use Decimal type when treat currencies.
Syntax: <value>.asDecimal()
Applies to the following types:
-
any
Examples
SELECT salary.asDecimal() FROM Employee
asDouble()
Transforms the field into a double type.
Syntax: <value>.asDouble()
Applies to the following types:
-
any
Examples
SELECT ray.asDouble() > 3.14
asFloat()
Transforms the field into a float type.
Syntax: <value>.asFloat()
Applies to the following types:
-
any
Examples
SELECT ray.asFloat() > 3.14
asInteger()
Transforms the field into an integer type.
Syntax: <value>.asInteger()
Applies to the following types:
-
any
| Float values are rounded towards zero (truncated). |
Examples
Converts the first 3 chars of 'value' field in an integer:
SELECT value.left(3).asInteger() FROM Log
asJSON()
Returns the record(s) in JSON format. If it’s executed on a result set, then the result set is completely browsed and the result set iteration exhausted (if browsed again, it will contain no records). If you need to access to the result set multiple times, transform it into a list with asList() and work with the list instead.
Syntax: <value>.asJSON([<format>])
Where:
-
format optional, allows custom formatting rules (separate multiple options by comma).
Rules are the following:
-
rid to include records’s RIDs as attribute "@rid"
-
type to include the type name in the attribute "@type"
-
attribSameRow put all the attributes in the same row
-
indent is the indent level as integer. By Default no ident is used
-
fetchPlan is the fetching strategy to use while fetching linked records
-
alwaysFetchEmbedded to always fetch embedded records (without considering the fetch plan)
-
dateAsLong to return dates (Date and Datetime types) as long numbers
-
prettyPrint indent the returning JSON in readable (pretty) way.
Applies to the following types:
-
record
Examples
CREATE VERTEX TYPE Test
INSERT INTO Test CONTENT {"attr1": "value 1", "attr2": "value 2"}
SELECT @this.asJSON('rid,version,fetchPlan:in_*:-2 out_*:-2') FROM Test
asList()
Transforms the value in a List. If it’s a single item, a new list is created.
Syntax: <value>.asList()
Applies to the following types:
-
any
Examples
SELECT tags.asList() FROM Friend
asLong()
Transforms the field into a Long type.
Syntax: <value>.asLong()
Applies to the following types:
-
any
Examples
SELECT date.asLong() FROM Log
asMap()
Transforms the value in a Map where even items are the keys and odd items are values.
Syntax: <value>.asMap()
Applies to the following types:
-
collections
Examples
SELECT tags.asMap() FROM Friend
asRecord()
Transforms the field into the linked record type
Syntax: <value>.asRecord()
Applies to the following types:
-
link
-
string
Examples
Transform link to a record:
SELECT "#1:0".asRecord()
asRID()
Transforms the field into an RID link type.
Syntax: <value>.asRID()
Applies to the following types:
-
string
Examples
Transform string holding an RID to a link:
SELECT "#1:0".asRID()
asSet()
Transforms the value in a Set. If it’s a single item, a new set is created. Sets do not allow duplicates.
Syntax: <value>.asSet()
Applies to the following types:
-
any
Examples
SELECT tags.asSet() FROM Friend
asShort()
Transforms the field into a short type.
Syntax: <value>.asShort()
Applies to the following types:
-
any
| Float values are rounded towards zero (truncated). |
Examples
Converts the first 3 chars of 'value' field in a short integer:
SELECT value.left(3).asShort() FROM Log
asString()
Transforms the field into a string type.
Syntax: <value>.asString()
Applies to the following types:
-
any
Examples
Get all the salaries with decimals:
SELECT salary.asString().indexof('.') > -1
capitalize()
Returns a string where each word (group of characters bounded by whitespace) is transformed such that its first character (if it is a letter) is converted to upper case, and the remaining characters (that are letters) are converted to lower case.
Syntax: <value>.capitalize()
Applies to the following types:
-
string
Examples
Return a capitalized string:
SELECT 'hi there'.capitalize()
charAt()
Returns the character of the string contained in the position 'position'. 'position' starts from 0 to string length.
Syntax: <value>.charAt(<position>)
Applies to the following types:
-
string
Examples
Get the first character of the users' name:
SELECT FROM User WHERE name.charAt( 0 ) = 'L'
convert()
Convert a value to another type.
Syntax: <value>.convert(<type>)
Applies to the following types:
-
any
Examples
SELECT dob.convert( 'date' ) FROM User
exclude()
Excludes some properties in the resulting document.
Syntax: <value>.exclude(<field-name>[,]*)
Applies to the following types:
-
document record
Examples
SELECT expand( @this.exclude( 'password' ) ) FROM User
You can specify a wildcard as ending character to exclude all the fields that start with a certain string. Example to exclude all the outgoing and incoming edges:
SELECT expand( @this.exclude( 'out_*', 'in_*' ) ) FROM V
This function can be used to remove internal properties like @rid, @type, etc.
SELECT @this.exclude('@*') FROM doc
field()
Returns a sub-property from an embedded document property. This method is useful for dynamic property names of types.
Syntax: <property>.field(<string>)
Applies to the following types:
-
embedded document
Examples
Returns a field named test from the embedded document property embdoc:
SELECT embdoc.field('test') FROM doc
format() [Method]
Returns the value formatted using the common "printf" syntax. For the complete reference goto Java Formatter JavaDoc.
Syntax: <value>.format(<format>)
Applies to the following types:
-
any
Examples
Formats salaries as number with 11 digits filling with 0 at left:
SELECT salary.format("%-011d") FROM Employee
hash()
Returns the hash of the field. Supports all the algorithms available in the JVM.
Syntax: <value>.hash([<algorithm>])`
Applies to the following types:
-
string
Examples
Get the SHA-512 of the field "password" in the type User:
SELECT password.hash('SHA-512') FROM User
ifempty()
Return argument if empty results from value/field/expression, otherwise return result.
Syntax: <value/field/expression>.ifempty(<value>)
Applies to the following types:
-
string
-
list
Examples
SELECT "".ifempty("Empty")
ifnull() [Method]
Return argument if null results from value/field/expression, otherwise return result.
Syntax: <value/field/expression>.ifnull(<value>)
Applies to the following types:
-
any
Examples
SELECT name.ifnull("John Doe") FROM names
include()
Include only some properties in the resulting document.
Syntax: <value>.include(<value>[,]*)
Applies to the following types:
-
document record
Examples
SELECT expand( @this.include('name') ) FROM User
You can specify a wildcard as ending character to inclide all the fields that start with a certain string.
Example to include all the fields that starts with amount:
SELECT expand( @this.include('amount*') ) FROM V
indexOf()
Returns the position of the 'string-to-search' inside the value. It returns -1 if no occurrences are found. 'begin-position' is the optional position where to start, otherwise the beginning of the string is taken (=0).
Syntax: <value>.indexOf(<string-to-search> [,<begin-position>])
Applies to the following types:
-
string
Examples
Returns all the UK numbers:
SELECT FROM Contact WHERE phone.indexOf('+44') > -1
intersectsWith()
Returns Boolean answering if argument shape intersects with shape instance.
Syntax: <point|circle|rectangle|linestring|polygon>.intersectsWith(<point|circle|rectangle|linestring|polygon>)
Examples
SELECT linestring( [ [10,10], [20,10], [20,20], [10,20], [10,10] ] ).intersectsWith( rectangle(10,10,20,20) ) AS collision
isWithin()
Returns Boolean answering if argument shape is fully inside shape instance.
Syntax: <point|circle|rectangle|linestring|polygon>.isWithin(<point|circle|rectangle|linestring|polygon>)
Examples
SELECT point(11,11).isWithin( circle(10,10,10) ) AS inside
javaType()
Returns the corresponding Java Type.
Syntax: <value>.javaType()
Applies to the following types:
-
any
Examples
Prints the Java type used to store dates:
SELECT FROM date.javaType() FROM Events
join()
Returns all elements of a list converted to a string and concatenated,
with strings separated by the argument string that has the default value ','.
Syntax: <value>.join([<separator>])
Applies to the following types:
-
lists
-
sets
Examples
SELECT [1,2,3].join('|')
keys()
Returns the map’s keys as a separate set. Useful to use in conjunction with IN, CONTAINS and CONTAINSALL operators.
Syntax: <value>.keys()
Applies to the following types:
-
maps
-
documents
Examples
SELECT FROM Actor WHERE 'Luke' IN map.keys()
lastIndexOf()
Returns the position of the 'string-to-search' inside the value starting from from the end. It returns -1 if no occurrences are found. 'begin-position' is the optional position where to start, otherwise the end of the string is taken (=0).
Syntax: <value>.lastIndexOf(<string-to-search> [,<begin-position>])
Applies to the following types:
-
string
SELECT 'Hello Albert'.lastIndexOf('l')
left()
Returns a substring of the original cutting from the begin and getting 'len' characters.
Syntax: <value>.left(<length>)
Applies to the following types:
-
string
Examples
SELECT FROM Actors WHERE name.left( 4 ) = 'Luke'
length()
Returns the string length of the input.
If null, 0 will be returned.
Syntax: <value>.length()
Applies to the following types:
-
any
| This method first converts its input to a string and then returns the string’s length. For obtaining a collection’s lengths use the size() method. |
Examples
SELECT FROM Providers WHERE name.length() > 0
normalize()
Unicode normalization form can be NDF, NFD, NFKC, NFKD, the default is NDF.
Pattern-matching, if not defined is the regular expression "\p{incombiningdiacriticalmarks}+".
For more information look at Unicode Standard.
Syntax: <value>.normalize( [<form>] [,<pattern-matching>] )
Applies to the following types:
-
string
Examples
SELECT FROM V WHERE name.normalize() AND name.normalize('NFD')
precision()
Adapts the returned date or time format to the argument target precision.
Syntax: <value>.precision('<string>')
| The admissible argument values are given here. |
Applies to the following types:
-
datetime
-
date
Examples
SELECT sysdate().precision('millisecond')
prefix()
Prefixes a string to another one.
A null base value results in a null.
Syntax: <value>.prefix('<string>')
Applies to the following types:
-
string
Examples
SELECT name.prefix('Mr. ') FROM Profile
remove()
Removes the first occurrence of the passed items.
Syntax: <value>.remove(<item>*)
Applies to the following types:
-
collection
Examples
SELECT [1,2,3,1].remove(1)
SELECT out().in().remove( @this ) FROM V
removeAll()
Removes all the occurrences of the passed items.
Syntax: <value>.removeAll(<item>*)
Applies to the following types:
-
collection
Examples
SELECT [1,2,3,1].removeAll(1)
SELECT out().in().removeAll( @this ) FROM V
replace()
Replace a string with another one.
Syntax: <value>.replace(<to-find>, <to-replace>)
Applies to the following types:
-
string
Examples
SELECT name.replace('Mr.', 'Ms.') FROM User
right()
Returns a substring of the original cutting from the end of the string 'length' characters.
Syntax: <value>.right(<length>)
Applies to the following types:
-
string
Examples
Returns all the vertices where the name ends by "ke".
SELECT FROM V WHERE name.right( 2 ) = 'ke'
size()
Returns the size of the collection.
Syntax: <value>.size()
Applies to the following types:
-
collection
Examples
Returns all the items in a tree with children:
SELECT FROM TreeItem WHERE children.size() > 0
sort()
Returns a sorted copy of the collection. The direction is controlled by a boolean argument,
which sets ascending direction for a true value (default), and descending for false.
| Only list of a single type can be sorted. |
| For scalar types this method is an identity. |
Syntax: <value>.sort([<dir>])
Applies to the following types:
-
collection
Examples
Sort inline lists:
SELECT [4,1,9,23].sort()
SELECT ["a","Y","b","9"].sort(false)
split()
Returns a list from a string separated by the provided delimiter.
Syntax: <value>.split(<string>)
Applies to the following types:
-
string
Examples
Returns string of comma separated values as list
SELECT 'a,b,c,d,e'.split(',')
subString()
Returns a substring of the original cutting from 'begin' index up to 'end' index (not included).
Syntax: <value>.subString(<begin> [,<end>] )
Applies to the following types:
-
string
Examples
Get all the items where the name begins with an "L":
SELECT name.substring( 0, 1 ) = 'L' FROM StockItems
Substring of ArcadeDB
SELECT "ArcadeDB".substring(0,6)
returns Arcade
transform()
Returns the underlying collection to which one or more methods (passed as string arguments) are applied element-wise.
Syntax: <value>.transform(<string>[,<string>]*)
Applies to the following types:
-
collection
| The argument methods cannot take arguments themselves. |
Examples
SELECT FROM Car WHERE options.transform( 'trim', 'toLowercase' ) CONTAINSALL ['a/c', 'airbags']
trim()
Returns the original string removing white spaces from the begin and the end.
Syntax: <value>.trim()
Applies to the following types:
-
string
Examples
SELECT name.trim() FROM Actors
trimPrefix()
Returns the original string removing argument from the front, if exists.
Syntax: <value>.trimPrefix(<value>)
Applies to the following types:
-
string
Examples
SELECT name.trimPrefix("Mr. ") FROM Actors
trimSuffix()
Returns the original string removing argument from the end, if exists.
Syntax: <value>.trimSuffix(<value>)
Applies to the following types:
-
string
Examples
SELECT name.trimSuffix(";") FROM Actors
toLowerCase()
Returns the string in lower case.
Syntax: <value>.toLowerCase()
Applies to the following types:
-
string
Examples
SELECT name.toLowerCase() FROM Actors
toUpperCase()
Returns the string in upper case.
Syntax: <value>.toUpperCase()
Applies to the following types:
-
string
Examples
SELECT name.toUpperCase() FROM Actors
type()
Returns the value’s ArcadeDB type as string. The potential return values are listed as "SQL type" here.
| The returned strings are all capitals. |
Syntax: <value>.type()
Applies to the following types:
-
any
Examples
Prints the type used to store dates:
SELECT date.type() FROM Events