Sintaxis y excepciones de ZCQL V2
Catalyst ha añadido varias mejoras y actualizaciones de sintaxis para ayudarte a escribir consultas ZCQL de manera más efectiva. Estas nuevas actualizaciones de sintaxis proporcionarán funcionalidades adicionales y te permitirán realizar operaciones relacionadas con datos en el Data Store con mucha mayor facilidad.
-
Para usar estas mejoras de funcionalidad, necesitarás migrar a la versión V2. Las actualizaciones de sintaxis no serán aplicables si las implementas mientras ejecutas comandos ZCQL en V1.
-
A partir del 1 de diciembre de 2024, todos tus proyectos actuales en todas tus organizaciones presentes en el entorno de desarrollo se mapearán automáticamente al ZCQL V2 Parser.
-
A partir del 1 de abril de 2025, todos los proyectos presentes en todas las organizaciones que ya hayan sido mapeados al ZCQL V2 Parser en el entorno de desarrollo se mapearán automáticamente al ZCQL V2 Parser en el entorno de producción, si y cuando se habilite producción para el proyecto.
Las siguientes excepciones y particularidades de sintaxis deben tenerse en cuenta al ejecutar una consulta ZCQL:
-
La función ZCQL AVG () se puede aplicar a los siguientes tipos de datos:
- Date
- DateTime
- Boolean
-
Cuando indicas un valor en tu sentencia ZCQL, indica el valor entre comillas simples.
Por ejemplo, si necesitas obtener un nombre particular de una base de datos de empleados, escribirás el comando de la siguiente manera:
SELECT Name FROM Employee_DB WHERE name = 'Amelia'
-
Si una columna es de tipo de dato Boolean:
- No se permiten valores de cadena.
- El tipo de dato Boolean solo admitirá los siguientes valores:
- FALSE
- TRUE
- NULL
-
Si estás usando un tipo de dato Encrypted, las siguientes funciones de ZCQL no se pueden usar en esa columna:
- AVG()
- SUM()
- MAX()
- MIN()
-
Se han añadido excepciones apropiadas cuando usas operadores comparativos como Less Than, Greater Than, Less Than or Equal y Greater Than or Equal en tipos de datos Encrypted Text y Boolean. Estas excepciones no son aplicables para los operadores Equal y Not Equal.
-
Las subconsultas ahora son compatibles en las sentencias de la cláusula WHERE. Puedes obtener más información sobre ellas en este documento de ayuda.
-
La cláusula ORDER BY ahora admite el uso de funciones de ZCQL.
-
En todas las columnas donde uses la cláusula ORDER BY, ahora se puede aplicar la funcionalidad ASC y DESC. También puedes aplicar ASC y DESC para columnas individuales.
Base de datos de ejemplo:
Considera la siguiente base de datos - ZylkerEmployeeCompensation
| Name | Salary | Reimbursement |
|---|---|---|
| Michelle Mascarenhas | 90000 | 10000 |
| Bruce Kyle | 3000000 | 45000 |
| Clark Kane | 3300 | 1500 |
| Judith Bridges | 4700 | 300 |
| Devon Dreymond | 80000 | 2300 |
| Ashley Kim | 6000 | 200 |
Ejecuta el siguiente comando para listar la tabla
SELECT Salary, Reimbursement FROM ZylkerEmployeeCompensation ORDER BY Salary ASC, Reimbursement DESC
Salida:
| ZylkerEmployeeCompensation.Salary | ZylkerEmployeeCompensation.Reimbursement |
|---|---|
| 3300 | 45000 |
| 4700 | 10000 |
| 6000 | 2300 |
| 80000 | 1500 |
| 90000 | 300 |
| 3000000 | 200 |
-
Se activarán excepciones apropiadas en los siguientes casos:
- Si se ha excedido el valor máximo/mínimo permitido en el tipo de dato Integer.
- Si la longitud de caracteres es mayor que el valor establecido por ti en el tipo de dato VarChar.
- Si el valor está fuera del rango soportado en el tipo de dato BIGINT.
-
Puedes escribir cuatro cláusulas JOIN en una sola sentencia ZCQL. Sin embargo, solo puedes escribir una condición JOIN para cada cláusula de join.
-
La funcionalidad de alias de tabla ahora es compatible en ZCQL. Ahora puedes invocar la funcionalidad de alias en ZCQL usando el comando AS de ZCQL. Con este comando puedes referirte a tu tabla con otros nombres.
Base de datos de ejemplo:
Considera las siguientes bases de datos:
Tabla 1: ZylkerEmployeeCompensation
| Name | Salary | Reimbursement |
|---|---|---|
| Michelle Mascarenhas | 90000 | 10000 |
| Bruce Kyle | 3000000 | 45000 |
| Clark Kane | 3300 | 1500 |
| Judith Bridges | 4700 | 300 |
| Devon Dreymond | 80000 | 2300 |
| Ashley Kim | 6000 | 200 |
Tabla 2: ZylkerEmployeeRelation
| Manager | Member |
|---|---|
| Michelle Mascarenhas | Bruce Kyle |
| Michelle Mascarenhas | Clark Kane |
| Judith Bridges | Michelle Mascarenhas |
Ejecuta el siguiente comando para listar la tabla
SELECT Managers.Name, Members.Name FROM ZylkerEmployeeCompensation AS Managers
INNER JOIN ZylkerEmployeeRelation AS asso ON Managers.ROWID = asso.Manager
INNER JOIN ZylkerEmployeeCompensation AS Members ON Members.ROWID = asso.Member
Salida:
| Manager.Name | Member.Name |
|---|---|
| Michelle Mascarenhas | Bruce Kyle |
| Michelle Mascarenhas | Clark Kane |
| Judith Bridges | Michelle Mascarenhas |
-
Puedes verificar si tienes un valor NULL usando el operador IS/IS NOT. La compatibilidad del operador IS/IS NOT solo está disponible para valores NULL.
-
Al escribir sentencias GROUP BY con Binaryof(), se deben recordar las siguientes reglas de ZCQL:
- La funcionalidad Binaryof() solo se puede usar en sentencias GROUP BY.
- Binaryof() solo se puede usar en columnas con tipo de dato VarChar o Text.
- Cuando se usa Binaryof() en una sentencia GROUP BY, los valores devueltos distinguen entre mayúsculas y minúsculas. Por ejemplo, considera que tienes los valores ‘AMELIA’, ‘amelia’, ‘Burrows’ y ‘burrows’ en una columna llamada Name, en una tabla llamada Zylker_EMP. Si usas el siguiente comando:
Select Name from Zylker_EMP group by binaryof(Name)
El resultado podría ser cualquiera de los siguientes:
- AMELIA
- amelia
- burrows
- Burrows
- Los nombres de columnas ahora pueden contener valores numéricos. Puedes indicar dichos nombres de columna en la consulta usando la puntuación de acento grave (`).
Por ejemplo, una consulta SELECT en una tabla llamada Numbers con una columna llamada 01 se puede escribir de la siguiente manera:
SELECT `01` FROM Numbers
Lista de excepciones de ZCQL
La siguiente es una lista de excepciones comunes y sentencias de consulta de ejemplo que pueden activar estas excepciones. Asegúrate de revisar la lista y seguir estrictamente la sintaxis de ZCQL para evitar activar estas excepciones.
| Tipo de dato | Caso | Consulta ZCQL de ejemplo | Excepción activada |
|---|---|---|---|
| Encrypted Text | Ciertos operadores no son compatibles | SELECT * FROM temp WHERE enc > 'temsp' | Operator > is not supported for ENCRYPTED TEXT La misma excepción se aplica, pero el mensaje de excepción se modificará en consecuencia si usas estos operadores <, <=, >= en la sentencia ZCQL |
| LIKE no es compatible | SELECT * FROM temp WHERE enc LIKE '*temsp' | Operator LIKE is not supported for ENCRYPTED TEXT La misma excepción se aplica, pero el mensaje de excepción se modificará en consecuencia si usas NOT LIKE en la sentencia ZCQL |
|
| BETWEEN no es compatible | SELECT * FROM temp WHERE enc BETWEEN 'one' AND 'ten' | Operator BETWEEN is not supported for ENCRYPTED TEXT La misma excepción se aplica, pero el mensaje de excepción se modificará en consecuencia si usas NOT BETWEEN en la sentencia ZCQL |
|
| IN no es compatible | SELECT * FROM temp WHERE enc IN ('one','three') | Operator IN is not supported for ENCRYPTED TEXT La misma excepción se aplica si usas NOT IN en tu consulta, pero el mensaje de excepción se modificará en consecuencia |
|
| Las funciones de ZCQL no son compatibles | SELECT AVG(enc) FROM temp | AVG() function is not supported for ENCRYPTED_TEXT Las funciones de ZCQL no son compatibles con Encrypted Text. |
|
| Boolean | Ciertos operadores no son compatibles | SELECT * FROM temp WHERE bools > FALSE | Operator > is not supported for BOOLEAN
La misma excepción se aplica, pero el mensaje de excepción se modificará en consecuencia si usas estos operadores <, <=, >= en la sentencia ZCQL |
| LIKE no es compatible | SELECT * FROM temp WHERE bools LIKE FALSE | Operator LIKE is not supported for BOOLEAN
La misma excepción se aplica si usas NOT LIKE en tu consulta, pero el mensaje de excepción se modificará en consecuencia |
|
| BETWEEN no es compatible | SELECT * FROM temp WHERE bools BETWEEN TRUE and FALSE | Operator BETWEEN is not supported for BOOLEAN La misma excepción se aplica si usas NOT BETWEEN en tu consulta, pero el mensaje de excepción se modificará en consecuencia |
|
| IN no es compatible | SELECT * FROM temp WHERE bools IN (TRUE, FALSE) | Operator IN is not supported for BOOLEAN
La misma excepción se aplica si usas NOT IN en tu consulta, pero el mensaje de excepción se modificará en consecuencia |
|
| VarChar | Longitud máxima excedida | INSERT INTO temp (Fishes) value (‘salmon’) | ‘salmon’ data too long for column ‘Fishes’
La columna Fishes fue creada como VarChar y el MaxLength se estableció en 5. En esta sentencia, ‘Salmon’ excede el MaxLength |
| Integer | Valor máximo excedido | INSERT INTO temp (numbers) VALUE (546895326908) | For column ‘ints’ INT value should be between -9999999999 and 9999999999 La columna numbers fue creada como INT. El valor del tipo de dato INT debe estar entre -9999999999 y 9999999999 |
| Big Integer | Valor máximo excedido | INSERT INTO temp (numbers) VALUE (92343432412351 435123453245) |
Given numeric value 92343432412351 435123453 is too large La columna numbers fue creada como BIGINT. El valor del tipo de dato BIGINT debe estar entre -9223372036854775808 y 9223372036854775807 |
| Text | Valor no encerrado entre comillas simples | SELECT * FROM temp WHERE name = one | Unknown Table temp or Unknown Column one in WHERE El valor one se considerará como columna si no está encerrado entre comillas: ‘one’ |
Última actualización 2026-03-20 21:51:56 +0530 IST
Yes
No
Send your feedback to us