# QBVectorColumn

## Overview

The `QBVectorColumn` class represents a vector column in a `QBSelect` query.

For more information about constructing and executing queries and columns, refer to the [QBSelect](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbcolumn) section of this documentation.

## **Extends**

[QBColumn](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbvectorcolumn)

## Properties Summarized

| Type                                                                                                           | Name              | Summary                             |
| -------------------------------------------------------------------------------------------------------------- | ----------------- | ----------------------------------- |
| [QBCondition](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbcondition)               | [isNull](#isnull) | Compare column with null.           |
| [QBVectorColumn](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbvectorcolumn)         | [max](#max)       | Create an aggregate max expression. |
| [QBVectorColumn](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbvectorcolumn)         | [min](#min)       | Create an aggregate min expression. |
| [QBColumnComparable](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbcolumncomparable) | [not](#not)       | Create a negated condition.         |

## Methods Summarized

| Type                                                                                                   | Name                                                      | Summary                                                                            |
| ------------------------------------------------------------------------------------------------------ | --------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| [QBCondition](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbcondition)       | [between(value1, value2)](#between-value1-value2)         | Compare column to a range of 2 values or other columns.                            |
| [QBVectorColumn](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbvectorcolumn) | [coalesce(value)](#coalesce-value)                        | Create coalesce(arg) expression                                                    |
| [QBCondition](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbcondition)       | [eq(value)](#eq-value)                                    | Compare column with a value or another column.                                     |
| [QBCondition](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbcondition)       | [ge(value)](#ge-value)                                    | Compare column with a value or another column.                                     |
| [QBCondition](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbcondition)       | [gt(value)](#gt-value)                                    | Compare column with a value or another column.                                     |
| [QBCondition](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbcondition)       | [isin(query)](#isin-query)                                | Compare column with subquery result.                                               |
| [QBCondition](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbcondition)       | [isin(values)](#isin-values)                              | Compare column with values.                                                        |
| [QBCondition](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbcondition)       | [isin(customQuery, args)](#isin-customquery-args)         | Compare column with custom query result.                                           |
| [QBCondition](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbcondition)       | [le(value)](#le-value)                                    | Compare column with a value or another column.                                     |
| [QBCondition](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbcondition)       | [lt(value)](#lt-value)                                    | Compare column with a value or another column.                                     |
| [QBVectorColumn](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbvectorcolumn) | [nullif(arg)](#nullif-arg)                                | Create nullif(arg) expression                                                      |
| [QBNumberColumn](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbnumbercolumn) | [vector\_distance(embedding)](#vector_distance-embedding) | Calculate the database native cosine distance for this column using the embedding. |
| [QBScoreColumn](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbscorecolumn)   | [vector\_score(embedding)](#vector_score-embedding)       | Calculate the normalized score for this column using the embedding.                |

## Properties Detailed

### isNull

Compare column with null.

**Type**\
[QBCondition](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbcondition) a QBCondition representing the "is null" comparison.

**Sample**

```js
query.where.add(query.columns.flag.isNull)
```

### max

Create an aggregate max expression.

**Type**\
[QBVectorColumn](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbvectorcolumn) a QBColumn representing the sum aggregate function.

**Sample**

```js
var query = datasources.db.example_data.orders.createSelect();
	query.groupBy.addPk() // have to group by on pk when using having-conditions in (foundset) pk queries
	.root.having.add(query.joins.orders_to_order_details.columns.quantity.count.max(10))
	foundset.loadRecords(query)
```

### min

Create an aggregate min expression.

**Type**\
[QBVectorColumn](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbvectorcolumn) a QBColumn representing the minimum aggregate function.

**Sample**

```js
var query = datasources.db.example_data.orders.createSelect();
	query.groupBy.addPk() // have to group by on pk when using having-conditions in (foundset) pk queries
	.root.having.add(query.joins.orders_to_order_details.columns.quantity.count.min(10))
	foundset.loadRecords(query)
```

### not

Create a negated condition.

**Type**\
[QBColumnComparable](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbcolumncomparable) a QBColumn representing the negated condition.

**Sample**

```js
query.where.add(query.columns.flag.not.eq(1))
```

## Methods Detailed

### between(value1, value2)

Compare column to a range of 2 values or other columns.

**Parameters**

* [Object](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/object) **value1** ;
* [Object](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/object) **value2** ;

**Returns:** [QBCondition](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbcondition) a QBCondition representing the "between" comparison for the two values.

**Sample**

```js
query.where.add(query.columns.flag.between(0, 5))
```

### coalesce(value)

Create coalesce(arg) expression

**Parameters**

* [Object](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/object) **value** when column is null

**Returns:** [QBVectorColumn](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbvectorcolumn) a QBColumn representing the coalesce expression.

**Sample**

```js
query.result.add(query.columns.mycol.coalesce('defval'))
```

### eq(value)

Compare column with a value or another column.\
Operator: equals

**Parameters**

* [Object](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/object) **value** ;

**Returns:** [QBCondition](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbcondition) a QBCondition representing the "equals" comparison.

**Sample**

```js
query.where.add(query.columns.flag.eq(1))
```

### ge(value)

Compare column with a value or another column.\
Operator: greaterThanOrEqual

**Parameters**

* [Object](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/object) **value** ;

**Returns:** [QBCondition](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbcondition) a QBCondition representing the "greater than or equal to" comparison.

**Sample**

```js
query.where.add(query.columns.flag.ge(2))
```

### gt(value)

Compare column with a value or another column.\
Operator: greaterThan

**Parameters**

* [Object](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/object) **value** ;

**Returns:** [QBCondition](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbcondition) a QBCondition representing the "greater than" comparison.

**Sample**

```js
query.where.add(query.columns.flag.gt(0))
```

### isin(query)

Compare column with subquery result.

**Parameters**

* [QBPart](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbpart) **query** subquery

**Returns:** [QBCondition](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbcondition) a QBCondition representing the "in" comparison with a subquery.

**Sample**

```js
query.where.add(query.columns.flag.isin(query2))
```

### isin(values)

Compare column with values.

**Parameters**

* [Array](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/array) **values** array of values

**Returns:** [QBCondition](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbcondition) a QBCondition representing the "in" comparison with a list of values.

**Sample**

```js
query.where.add(query.columns.flag.isin([1, 5, 99]))
```

### isin(customQuery, args)

Compare column with custom query result.

**Parameters**

* [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string) **customQuery** custom query
* [Array](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/array) **args** query arguments

**Returns:** [QBCondition](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbcondition) a QBCondition representing the "in" comparison with a custom query and arguments.

**Sample**

```js
query.where.add(query.columns.ccy.isin("select ccycode from currencies c where c.category = " + query.getTableAlias() + ".currency_category and c.flag = ?", ['T']))
```

### le(value)

Compare column with a value or another column.\
Operator: lessThanOrEqual

**Parameters**

* [Object](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/object) **value** ;

**Returns:** [QBCondition](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbcondition) a QBCondition representing the "less than or equal to" comparison.

**Sample**

```js
query.where.add(query.columns.flag.le(2))
```

### lt(value)

Compare column with a value or another column.\
Operator: lessThan

**Parameters**

* [Object](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/object) **value** ;

**Returns:** [QBCondition](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbcondition) a QBCondition representing the "less than" comparison.

**Sample**

```js
query.where.add(query.columns.flag.lt(99))
```

### nullif(arg)

Create nullif(arg) expression

**Parameters**

* [Object](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/object) **arg** object to compare

**Returns:** [QBVectorColumn](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbvectorcolumn) a QBColumn representing the nullif expression.

**Sample**

```js
query.result.add(query.columns.mycol.nullif('none'))
```

### vector\_distance(embedding)

Calculate the database native cosine distance for this column using the embedding.

The native cosine distance is a positive number where lower means better.\
When sorting on score you can sort on 'vector\_distance(embedding) asc' to get the best matches first.

**Parameters**

* [Array](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/array) **embedding** embedding object

**Returns:** [QBNumberColumn](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbnumbercolumn) the QBNumberColumn that can be used for sorting.

**Sample**

```js
query.sort.add(query.joins.books_to_books_embeddings.columns.embedding.vector_distance(model.embedding('Magic or Fantasy')))
```

### vector\_score(embedding)

Calculate the normalized score for this column using the embedding.

The normalized score is a number from 0 to 1 where higher means better.\
When sorting on score you can sort on 'vector\_score(embedding) desc' to get the best matches first.\
It is more efficient to sort using the native distance function 'vector\_distance(embedding) asc' to get the best matches first.

The score result has a function min\_score for filtering on the score, this is optimized for filtering compared to the standard number comparison functions.

**Parameters**

* [Array](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/array) **embedding** embedding object

**Returns:** [QBScoreColumn](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbscorecolumn) the QBScoreColumn that can be added to the result.

**Sample**

```js
query.result.addquery.joins.books_to_books_embeddings.columns.embedding.vector_score(model.embedding('Magic or Fantasy'))
```

***
