|
|
|
|
- Presentación
- DONDE
- GROUP BY
- GROUP BY con parámetros
- TENIENDO
- LÍMITE
- Y / O
- ENTRE
- EN
- ES NULO
- COMO
- NO
- XOR
Condiciones de selección SQL
Para especificar las condiciones de selección en una consulta SQL, puede utilizar: | | | | Cláusulas SQL: | | | | Operadores SQL: | | | |
Consulte una documentación específica sobre SQL para obtener más detalles. Observaciones: - Estas cláusulas y operadores pueden ser utilizados:
- en el código SQL de las consultas creadas en el editor de consultas. Estas consultas se ejecutan con la función HExecuteQuery.
- en el código SQL de las consultas ejecutadas con la función de WLanguage HExecuteSQLQuery.
- A menos que se indique lo contrario, estas cláusulas y operadores pueden utilizarse en todo tipo de fuentes de datos (Oracle, Access, SQL Server, ....).
El DÓNDE para especificar las condiciones de selección. Formato de uso: Ejemplo: El siguiente código SQL selecciona el Cliente llamado "Montgomery": SELECT *
FROM CUSTOMER
WHERE CUSTOMER.CustomerLastName = 'Montgomery' Observación: Si se especifican varias condiciones, utilice los operadores AND y/o OR para vincular estas condiciones. El GRUPO DE le permite organizar una selección de registros por grupo. En una secuencia SELECT, la directiva GRUPO DE viene después de la cláusula DÓNDE y se especifica antes de la cláusula PEDIDO POR cláusula Para especificar condiciones en grupos de registros generados por el archivo GRUPO DE utilice la cláusula HAVING. Formato de uso: WHERE SelectionConditions GROUP BY ItemNames Ejemplo: El siguiente código SQL se utiliza para mostrar la suma total de pedidos por cliente. El resultado se agrupará por nombre de cliente y por ciudad: SELECT CUSTOMER.CustomerLastName,
CUSTOMER.City,
SUM(ORDERS.TotalIOT) AS TotalIOT
FROM CUSTOMER, ORDERS
WHERE CUSTOMER.CustNum = ORDERS.CustNum
GROUP BY CustomerLastName, City GROUP BY con parámetros La cláusula GROUP BY acepta recibir valores como parámetro. Esta noción es muy útil cuando la cláusula GROUP BY se basa en una fórmula y cuando uno de los elementos de la fórmula es un Variable. Ejemplo de código SQL SELECT
SUM(File1.Item1) AS Sum1,
File2.Item1 * {QryParam} AS Formula1,
File2.Item2 AS Item2
FROM
File1, File2
WHERE
File1.Key1 = File2.Key2
GROUP BY
File2.Item1 * {QryParam},
File2.Item2 Ejemplo de código para llamar la consulta Qry1.QryParam = value HExecuteQuery(Qry1)
TENIENDO El TENER le permite especificar una o más condiciones en grupos de registros generados por la cláusula GROUP BY. En una secuencia SELECT, la directiva TENER viene después de la cláusula GRUPO DE y se especifica antes de la cláusula PEDIDO POR cláusula Formato de uso: WHERE SelectionConditions GROUP BY NamesOfItems HAVING GroupConditions Ejemplo: El siguiente código SQL se utiliza para mostrar la suma total de pedidos por cliente. El resultado se agrupará por nombre de cliente y por ciudad. Sólo se considerarán los clientes con un importe total de pedidos superior a 3.000 euros: SELECT CUSTOMER.CustomerLastName, CUSTOMER.City,
SUM(ORDERS.TotalIOT) AS TotalIOT
FROM CUSTOMER, ORDERS
WHERE CUSTOMER.CustNum = ORDERS.CustNum
GROUP BY CustomerLastName, City
HAVING TotalIOT > 3000 LÍMITE El LÍMITE se utiliza para limitar el número de registros devueltos. En una secuencia SELECT, la directiva LÍMITE viene después de las cláusulas GROUP BY, HAVING y ORDER BY. Formato de uso: WHERE SelectionConditions GROUP BY NamesOfItems HAVING GroupConditions LIMIT [Start,] NumberOfLines WHERE SelectionConditions GROUP BY NamesOfItems HAVING GroupConditions LIMIT NumberOfLines OFFSET Start La cláusula LIMIT acepta uno o dos argumentos numéricos. Estos argumentos deben ser enteros constantes. Con un argumento (NumberOfLines), el valor especifica el número de líneas a devolver desde el principio del resultado set. Si se especifican dos argumentos, el primero indica el desplazamiento del primer Record a regresar (desde) y el segundo da el número máximo de Record s a regresar. El offset del primer Record es set a 0. Observación: LIMIT x es equivalente a LIMIT 0,x o a TOP x. Ejemplo: Modificación dinámica de la condición LIMIT de una consulta SQL QRY is Data Source sMyQry is string = [ SELECT * FROM ZIPCODES %1 ]
sMyQry = StringBuild(sMyQry, "LIMIT 1, 10") IF NOT HExecuteSQLQuery(QRY, hQueryDefault, sMyQry) THEN Error(HErrorInfo()) ELSE Info("The query contains " + HNbRec(QRY) + " records.") END
El DÓNDE puede incluir varias condiciones. En este caso, las condiciones están relacionadas gracias a los operadores AND y/o OR. Formato de uso: SelectionConditionN AND/OR SelectionConditionN+1 Ejemplo: - El siguiente código SQL se utiliza para indicar los clientes masculinos que viven en París (75):
SELECT CUSTOMER.CustomerLastName
FROM CUSTOMER
WHERE CUSTOMER.Title LIKE 'Mr%'
AND CUSTOMER.ZipCode LIKE '75%' - El siguiente código SQL se utiliza para listar ambos:
- los clientes varones (independientemente del lugar donde vivan).
- los clientes (hombres o mujeres) que viven en París (75).
SELECT CUSTOMER.CustomerLastName
FROM CUSTOMER
WHERE CUSTOMER.Title LIKE 'Mr%'
OR CUSTOMER.ZipCode LIKE '75%'
Observación: El Y también se puede utilizar con el operador ENTRE el operador. El ENTRE se utiliza para seleccionar los registros cuyo valor para un artículo pertenece a un rango de valores. Los límites se incluyen en el resultado. Formato de uso: WHERE ItemName BETWEEN MinimumValue AND MaximumValue Ejemplo: El siguiente código SQL se utiliza para listar los pedidos realizados entre el 01/01/2012 y el 01/07/2012 (las fechas están incluidas en el resultado): SELECT ORDERS.OrderNum
FROM ORDERS
WHERE ORDERS.OrderDate BETWEEN '20120101' AND '20120701' Observación: Para seleccionar los registros que no pertenecen a este rango de valores, utilice el operador NOT. El EN se utiliza para seleccionar los registros cuyos valores corresponden a una lista de valores especificados. Formato de uso: WHERE ItemName IN (Value1, Value2,..., ValueN) Ejemplo: El siguiente código SQL se utiliza para listar los clientes que viven en Montpellier, Avignon o Marsella: SELECT CUSTOMER.CustomerLastName
FROM CUSTOMER
WHERE CUSTOMER.City IN ('Montpellier', 'Avignon', 'Marseille') Ejemplo: El siguiente código se utiliza para listar los clientes que viven en Montpellier, Avignon o Marsella con una consulta de proyecto: // The QRY_CityCustomerList query of the project corresponds to the code: // SELECT * FROM CUSTOMER WHERE CUSTOMER.City IN ({ConfigCityList}) QRY_CityCustomerList.ConfigCityList = "'Montpellier';'Avignon';'Marseille'" // or QRY_CityCustomerList.ConfigCityList = "Montpellier;Avignon;Marseille" HExecuteQuery(QRY_CityCustomerList) Info(HNbRec(QRY_CityCustomerList) + " Customers in the selected cities.")
Observaciones: - Para seleccionar los registros que no pertenecen a esta lista de valores, utilice el operador NOT.
- Los valores especificados pueden corresponder a un parámetro (Variable, nombre control, ...). En este caso, los valores encontrados en este parámetro deben estar separados por un punto y coma (";"), un retorno de carro ("RC") o una tabulación ("TAB").
El ES NULO se utiliza para seleccionar los registros cuyo valor para un elemento es nulo. Formato de uso: Ejemplo: El siguiente código SQL se utiliza para seleccionar los productos que no pertenecen a una familia de productos: SELECT PRODUCT.ProductName
FROM PRODUCT
WHERE PRODUCT.Family IS NULL Observación: Para seleccionar los registros cuyo valor para un elemento no es nulo, utilice el operador NOT. El COMO se utiliza para seleccionar los registros cuyo valor para un elemento corresponde a un valor especificado (con caracteres comodín). Los caracteres comodín autorizados son: - '%': representa cero, uno o más caracteres.
- '_': representa un solo carácter.
Estos caracteres genéricos se pueden combinar. Formato de uso: WHERE ItemName LIKE Value Ejemplos:
- El siguiente código SQL se utiliza para seleccionar los clientes cuyo apellido comienza con la letra 'A':
SELECT CUSTOMER.CustomerLastName
FROM CUSTOMER
WHERE CUSTOMER.CustomerLastName LIKE 'A%' - El siguiente código SQL se utiliza para seleccionar los clientes cuyo apellido comienza con la letra 'A' y que contiene al menos 4 caracteres:
SELECT CUSTOMER.CustomerLastName
FROM CUSTOMER
WHERE CUSTOMER.CustomerLastName LIKE 'A___%' - El siguiente código SQL se utiliza para seleccionar los clientes cuyo apellido contiene la letra 'A'.:
SELECT CUSTOMER.CustomerLastName
FROM CUSTOMER
WHERE CUSTOMER.CustomerLastName LIKE '%A%' - El siguiente código SQL se utiliza para seleccionar los clientes cuyo apellido termina con la letra 'A':
SELECT CUSTOMER.CustomerLastName
FROM CUSTOMER
WHERE CUSTOMER.CustomerLName LIKE '%A'
Observación: Para seleccionar los registros cuyo valor para un artículo difiera del valor especificado, utilice el operador NOT. Uso de índices en los archivos HFSQL El índice se utiliza si: - el valor buscado no contiene ningún carácter genérico ("%" o "_").
- el valor buscado contiene un único carácter '%' que se encuentra en la última posición y ningún otro carácter genérico (búsqueda"comienza con").
En todos los demás casos, no se utilizan los índices. Nota: No hay diferencia entre LIKE y NOT LIKE Encontrar los caracteres _ y \en LIKE: Para encontrar los caracteres '_' o '\', estos caracteres deben ir precedidos de un carácter de escape. Por Default, este personaje es '\'. Puede redefinirse utilizando la palabra clave ESCAPE justo después de la cláusula LIKE.
Ejemplos: - Buscar cadenas que contengan "_1\": COMO '%\_1\_ASLASH_ %'
- Buscar cadenas que contengan "_1 _ASLASH_" mientras redefine el carácter de escape por @: COMO'%@_1@\%' ESCAPE '@' ESCAPE
Sensibilidad La sensibilidad (al caso, a los caracteres acentuados, a la puntuación, a los caracteres especiales) corresponde a la sensibilidad de la tecla utilizada. Si el elemento utilizado no es un elemento clave o si el operador no utiliza ningún índice, la comparison será insensible a las mayúsculas y a los caracteres acentuados. Si el elemento utilizado corresponde a la concatenación de varios elementos, la comparison será: - insensible a las mayúsculas y minúsculas si al menos uno de los elementos concatenados no es sensible a las minúsculas y minúsculas.
- insensible a los caracteres acentuados si al menos uno de los elementos concatenados no es sensible a los caracteres acentuados.
- insensible a la puntuación si al menos uno de los elementos concatenados no es sensible a los caracteres de puntuación.
- insensible a los caracteres especiales si al menos uno de los elementos concatenados no es sensible a los caracteres especiales.
El NO invierte el significado del operador lógico utilizado: - NO ENTRE: selecciona los registros para los que el valor de un artículo no pertenece a un rango de valores.
- NOT IN: selecciona los registros cuyos valores difieren de una lista de valores.
- NO ME GUSTA: selecciona registros para los que el valor de un elemento es diferente de un valor especificado (con caracteres comodín).
- IS NOT NULL: selecciona los registros cuyo valor para un artículo es diferente del valor nulo.
XOR El XOR corresponde al operador lógico exclusivo OR. - Si uno de los operandos corresponde al valor nulo, este operador devuelve NULL.
- Para los operandos no nulos, este operador devuelve 1 para un número par de operandos no nulos y 0 en los otros casos..
Formato de uso: WHERE Operand1 XOR Operand2
Esta página también está disponible para…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|