AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / Editores / Editor de consultas / SQL
  • Presentación
  • DONDE
  • GROUP BY
  • GROUP BY con parámetros
  • TENIENDO
  • LÍMITE
  • Y / O
  • ENTRE
  • EN
  • ES NULO
  • COMO
  • NO
  • XOR
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Presentación
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.
Para saber más sobre todos los comandos SQL (funciones, cláusulas, operadores, etc.) que se pueden utilizar en una consulta SQL, consulte Comandos SQL disponibles en una consulta SQL.
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, ....).

DONDE

El DÓNDE para especificar las condiciones de selección.
Formato de uso:
WHERE SelectionCondition
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.

GROUP BY

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

Y / O

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.

ENTRE

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.

EN

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").

ES NULO

El ES NULO se utiliza para seleccionar los registros cuyo valor para un elemento es nulo.
Formato de uso:
WHERE ItemName IS NULL
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.

COMO

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.

NO

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
Versión mínima requerida
  • Versión 9
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 27/05/2022

Señalar un error o enviar una sugerencia | Ayuda local