There also exist algebraic operators (+,  -, *, /) to perform string concatenation and deletion.

 ```SELECT "Hello"+"World" FROM Stream => "HelloWorld" SELECT "HelloWorld"-"World" FROM Stream => "Hello" SELECT "HelloWorld"*3 FROM Stream => "HelloWorldHelloWorldHelloWorld" SELECT "HelloWorldHelloWorldHelloWorld"/"World" FROM Stream => 3```

### Concat(String s1, String s2)

Returns a new string that is a concatenating the arguments.

### SubString(String s, Number begin, Number end)

Returns a new string that is a substring of the value with given begin and end index

 ```SELECT substring("Hello World",1,3) FROM Stream => "el"```

### SubString(String s, Number begin)

Returns a new string that is a substring of the value starting at the begin index until the end of the string

 ```SELECT substring("Hello World",1) FROM Stream => "ello World"```

### Length(String s)

Returns the length of a string.

 ```SELECT length("Hello") FROM Stream => 5```

### Upper(String s)

Returns the string converted to uppercase.

 ```SELECT upper("Hello World") FROM Stream => "HELLO WORLD"```

### Lower(String s)

Returns the string converted to lowercase.

 ```SELECT lower("Hello World") FROM Stream => "hello world"```

## Parsing of Strings

The most functions provide one return value. Sometimes it is needed to split an incoming attribute to multiple values

### split(String s, String delimiter, Number index)

This function returns number (third parameter) strings from the input string (first parameter) with the delimiter (second parameter).

 `SELECT split(input,",",3) FROM stream`

Remark: There is no way to parse different types with this function. Each incoming string must contains exactly the given numbers of inputs.