Notas de uso para las funciones definidas por el usuario (UDF).
Lista de UDF
|
Función |
Descripción |
|
Comprueba si un valor de campo está incluido en un conjunto especificado. Es compatible con campos de valor único y de valores múltiples. |
|
|
Comprueba si un valor de campo está excluido de un conjunto especificado. Es compatible con campos de valor único y de valores múltiples. |
|
|
Consulta el índice invertido de un campo especificado según las condiciones indicadas. |
|
|
Consulta índices invertidos según las condiciones especificadas mediante la sintaxis de consulta original de HA3. |
|
|
Combina varios valores INT64 en un solo valor INT64. |
|
|
Mapea valores de campo por rango. |
|
|
Comprueba si un valor de campo está incluido en un intervalo especificado. |
|
|
Normaliza los valores de campo. |
Consultas de ejemplo
Consultar todos los datos de la tabla
SELECT nid, price, brand, size FROM phone ORDER BY nid LIMIT 1000
USE_TIME: 0.881, ROW_COUNT: 10
------------------------------- TABLE INFO ---------------------------
nid | price | brand | size |
1 | 3599 | Huawei | 5.9 |
2 | 4388 | Huawei | 5.5 |
3 | 899 | Xiaomi | 5 |
4 | 2999 | OPPO | 5.5 |
5 | 1299 | Meizu | 5.5 |
6 | 169 | Nokia | 1.4 |
7 | 3599 | Apple | 4.7 |
8 | 5998 | Apple | 5.5 |
9 | 4298 | Apple | 4.7 |
10 | 5688 | Samsung | 5.6 |
contain
-
Prototipo
boolean contain(INT a, const string b) boolean contain(LITERAL a, const string b) boolean contain(INT_ARRAY a, const string b) boolean contain(LITERAL_ARRAY a, const string b) Descripción
Comprueba si el campo de valor único o de valores múltiples a contiene el contenido descrito en b.
-
Parámetros
Parámetro a: Una entrada de tipo INT, LITERAL, INT_ARRAY o LITERAL_ARRAY.
Parámetro b: Una expresión de cadena constante, separada por
|, que indica que basta con coincidir con cualquiera de los elementos. -
Valor de retorno
Un valor booleano que indica si el parámetro a contiene el conjunto descrito en el parámetro b.
Ejemplo
SELECT nid, price, brand, size FROM phone WHERE contain(nid, '1|2|3') ORDER BY nid LIMIT 100
USE_TIME: 0.059, ROW_COUNT: 3
------------------------------- TABLE INFO ---------------------------
nid | price | brand | size |
1 | 3599 | Huawei | 5.9 |
2 | 4388 | Huawei | 5.5 |
3 | 899 | Xiaomi | 5 |
notcontain
-
Prototipo
boolean notcontain(INT a, const string b) boolean notcontain(LITERAL a, const string b) boolean notcontain(INT_ARRAY a, const string b) boolean notcontain(LITERAL_ARRAY a, const string b) -
Descripción
Comprueba si el campo de valor único o de valores múltiples a no está en el contenido descrito en b.
-
Parámetros
Parámetro a: Una entrada de tipo INT, LITERAL, INT_ARRAY o LITERAL_ARRAY.
Parámetro b: Una expresión de cadena constante, separada por
|, que indica que no se debe coincidir con ninguno de los elementos. -
Valor de retorno
Un valor booleano que indica si el parámetro a no está en el conjunto descrito en el parámetro b.
-
Ejemplo
Use
notcontainpara recuperar todos los registros cuyo valor de campo nid no esté en el rango [1,2,3].SELECT nid, price, brand, size FROM phone WHERE notcontain(nid, '1|2|3') ORDER BY nid LIMIT 100USE_TIME: 0.092, ROW_COUNT: 7 ------------------------------- TABLE INFO --------------------------- nid | price | brand | size | 4 | 2999 | OPPO | 5.5 | 5 | 1299 | Meizu | 5.5 | 6 | 169 | Nokia | 1.4 | 7 | 3599 | Apple | 4.7 | 8 | 5998 | Apple | 5.5 | 9 | 4298 | Apple | 4.7 | 10 | 5688 | Samsung | 5.6 |
MATCHINDEX
-
Prototipo
boolean MATCHINDEX(const string a, const string b) -
Descripción
Comprueba si el campo a contiene el contenido descrito en b, para la recuperación de índices de campo único.
Se usa únicamente para la optimización de aceleración del índice invertido durante la fase de recuperación de la tabla de índices, en condiciones WHERE.
-
Parámetros
Parámetro a: Una entrada de tipo cadena constante, correspondiente al campo para el cual se construyó la optimización del índice invertido.
Parámetro b: Una entrada de tipo cadena constante, cuyo contenido es la descripción de la cadena.
El parámetro b se puede consultar como una sola cadena.
-
Valor de retorno
Un valor booleano que indica si el campo a contiene el contenido descrito en el parámetro b.
-
Ejemplo
Use
MATCHINDEXpara recuperar registros cuyo campo de índice invertidotitlecontenga la palabra clave "lens".SELECT nid, brand FROM phone WHERE MATCHINDEX('title', 'lens')------------------------------- TABLE INFO --------------------------- nid | brand | 1 | Huawei |
QUERY
-
Prototipo
boolean QUERY(const string a, const string b) -
Descripción
Comprueba si el campo a contiene el contenido descrito en b, y proporciona capacidades automáticas de tokenización y recuperación.
Se utiliza para admitir la sintaxis de consulta nativa del motor HA3 (sintaxis de consulta HA3) en modo SQL.
Se usa únicamente para la optimización de aceleración del índice invertido durante la fase de recuperación de la tabla de índices, en condiciones WHERE.
-
Parámetros
Parámetro a: Una entrada de tipo cadena constante, que se utiliza como campo de índice predeterminado.
Parámetro b: Una entrada de tipo cadena constante, cuyo contenido es la descripción de la cadena.
Se anexa al análisis de la consulta y se puede utilizar para índices de rango.
-
Valor de retorno
Un valor booleano que indica si el campo a contiene el contenido descrito en el parámetro b.
Ejemplo
Use
QUERYpara consultar entradas cuyotitlecontenga "Huawei phone".Use una condición combinada para recuperar entradas cuyo
titlecontenga "Huawei phone" u "OPPO phone".Nota:
El parámetro 2 de la UDF QUERY es analizado por el parser de sintaxis de consulta HA3. En la sintaxis de consulta HA3, cuando el parámetro 2 es una cadena constante, tenga en cuenta que se deben eliminar las comillas simples iniciales y finales al pasarlo a la consulta HA3. Por ejemplo, QUERY(title, 'Huawei phone OPPO phone') equivale a la consulta HA3 query=Huawei phone OPPO phone. Si necesita agregar comillas dentro de la descripción de la consulta, como en la cadena de consulta HA3 query='Huawei phone' AND 'OPPO phone', la forma equivalente en la UDF QUERY es QUERY(title, '''Huawei phone'' AND ''OPPO phone'''). Para notas de uso sobre cadenas constantes en descripciones SQL, consulte la sección 'Cadenas constantes' en [Límites].
Errores comunes:
SELECT nid, price, brand, size FROM phone WHERE QUERY(title, 'Huawei phone')
USE_TIME: 0.034, ROW_COUNT: 1
------------------------------- TABLE INFO ---------------------------
nid | price | brand | size |
2 | 4388 | Huawei | 5.5 |
SELECT nid, price, brand, size FROM phone
WHERE QUERY(title, 'Huawei phone OR OPPO phone')
USE_TIME: 0.03, ROW_COUNT: 2
------------------------------- TABLE INFO ---------------------------
nid | price | brand | size |
2 | 4388 | Huawei | 5.5 |
4 | 2999 | OPPO | 5.5 |
|
Tipo de error |
Forma incorrecta |
Forma correcta |
|
Error de sintaxis, la consulta no devuelve resultados |
QUERY('pidvid','123:456') |
QUERY('pidvid','"123:456"') |
rangevalue
-
Prototipo
float rangevalue(float v, string desc) Descripción
Mapea valores continuos a valores discretos.
-
Parámetros
Parámetro v: Una columna de valores continuos.
Parámetro desc: La regla de mapeo.
-
Valor de retorno
El valor discreto después del mapeo.
-
Ejemplo
Use
rangevaluepara mapear el valor de precio: los valores menores o iguales a 1000 se mapean a 1.0, los valores mayores que 1000 y menores o iguales a 5000 se mapean a 2.0, y otros valores conservan el precio original.SELECT rangevalue(price,'(,1000]:1.0;(1000,5000]:2.0') FROM phone;
range
-
Prototipo
boolean range(INT v, const string rangeDesc) boolean range(FLOAT v, const string rangeDesc) boolean range(DOUBLE v, const string rangeDesc) Descripción
Comprueba si un valor de campo de índice directo se encuentra dentro de un intervalo.
-
Parámetros
Parámetro v: Un campo. Se admiten tipos numéricos de valor único.
Parámetro rangeDesc: Una constante que describe el intervalo de rango numérico. Se admiten intervalos abiertos, cerrados y semiabiertos.
-
Valor de retorno
Comprueba si v está dentro del rango descrito por rangeDesc. La siguiente tabla enumera las notaciones admitidas y sus valores de retorno.
Ejemplo de notación de llamada | Valor de retorno |
range(v, "[0, 100]") | 0<=v<=100 |
range(v, "(0, 100)") | 0<v<100 |
range(v, "[0, 100)") | 0<=v<100 |
range(v, "(0, 100]") | 0<v<=100 |
range(v, "(0,)") range(v, "(0,]") | 0<v |
range(v, "[0,)") range(v, "[0,]") | 0<=v |
range(v, "(,100)") range(v, "[,100)") | v<100 |
range(v, "(,100]") range(v, "[,100]") | v<=100 |
range(v, "(,)") range(v, "[,]") range(v, "[,)") range(v, "(,]") | true |
Nota: rangeDesc también admite el símbolo "!" al inicio de la línea para negar el intervalo deseado.
-
Ejemplo
Use
rangeSELECT nid FROM phone where range(price,"(127.0,30.0)") SELECT nid FROM phone where range(price,"!(127.0,30.0)")Nota: range es una palabra clave reservada en SQL y debe escaparse.
normalizescore
-
Prototipo
double normalizescore(INT v, const double defaultScore) double normalizescore(FLOAT v, const double defaultScore) double normalizescore(DOUBLE v, const double defaultScore) Descripción
Normaliza el campo de entrada v y lo convierte al tipo double. Si está inicializado, se devuelve el valor original; si no está inicializado, se devuelve defaultScore.
-
Parámetros
Parámetro v: Un campo. Se admiten tipos numéricos de valor único.
Parámetro defaultScore: Una descripción constante que debe ser una cadena convertible a un tipo double válido.
-
Valor de retorno
Si v está inicializado, se devuelve el valor original; si no está inicializado, se devuelve defaultScore.
Ejemplo
For 3 docs that have the field price, the original content is as follows:
doc1: price=1.0
doc2: price= (uninitialized)
doc3: price=2.0
Execute
select normalizescore(price, "1000.0") as normalized_score from phone
USE_TIME: 32.141ms, ROW_COUNT: 2
------------------------------- TABLE INFO ---------------------------
normalized_score(double) |
1.0 |
1000.0 |
2.0. |