SQL03: Clàusula SQL WHERE

La clàusula WHERE s'utilitza per filtrar registres.
S'utilitza per extreure només aquells registres que compleixen una condició especificada.


Exemple de clàusula WHERE

La següent instrucció SQL selecciona tots els clients del país "Mèxic", a la taula "Customers":

SQL: SELECT * FROM Customers WHERE Country='Mexico';
GenQL:
List<Customers> mexicoCustomers = this.getCustomerManager().select(CustomersFields.COUNTRY.equal("Mexico")); print(mexicoCustomers);





Camps de text vs. Camps numèrics

SQL requereix cometes simples al voltant dels valors de text (la majoria dels sistemes de bases de dades també permetran cometes dobles). Tanmateix, els camps numèrics no s'han d'entre cometes:

SQL: SELECT * FROM Customers WHERE CustomerID=1;
GenQL:
Customers customerID1 = this.getCustomerManager().findByPrimaryKey(1L); print(customerID1);





Camps de text vs. Camps numèrics

SQL requereix cometes simples al voltant dels valors de text (la majoria dels sistemes de bases de dades també permetran cometes dobles). Tanmateix, els camps numèrics no s'han d'entre cometes:

SQL: SELECT * FROM Customers WHERE CustomerID=1;
GenQL:
List<Customers> customerID1 = this.getCustomerManager().select(CustomersFields.CUSTOMERID.equal(1L)); print(customerID1);





Operadors de la clàusula WHERE: igual (=)

SQL: SELECT * FROM Products WHERE Price = 18;
GenQL:
List<Products> products = this.getProductsManager().select(ProductsFields.PRICE.equal(18.0)); print(products);





Operadors de la clàusula WHERE: superior a (>)

SQL: SELECT * FROM Products WHERE Price > 30;
GenQL:
List<Products> products = this.getProductsManager().select(ProductsFields.PRICE.greaterThan(30.0)); print(products);





Operadors de la clàusula WHERE: menys de (<)

SQL: SELECT * FROM Products WHERE Price < 30;
GenQL:
List<Products> products = this.getProductsManager().select(ProductsFields.PRICE.lessThan(30.0)); print(products);





Operadors de la clàusula WHERE: superior o igual (> =)

SQL: SELECT * FROM Products WHERE Price >= 30;
GenQL:
List<Products> products = this.getProductsManager().select(ProductsFields.PRICE.greaterThanOrEqual(30.0)); print(products);





Operadors de la clàusula WHERE: inferior o igual (<=)

SQL: SELECT * FROM Products WHERE Price <= 30;
GenQL:
List<Products> products = this.getProductsManager().select(ProductsFields.PRICE.lessThanOrEqual(30.0)); print(products);





Operadors de la clàusula WHERE: no és igual (<>)

SQL: SELECT * FROM Products WHERE Price <> 18
GenQL:
List<Products> products = this.getProductsManager().select(ProductsFields.PRICE.notEqual(18.0)); print(products);





Operadors de la clàusula WHERE: BETWEEN

SQL: SELECT * FROM Products WHERE Price BETWEEN 50 AND 60;
GenQL:
List<Products> products = this.getProductsManager().select(ProductsFields.PRICE.between(50.0, 60.0)); print(products);





Operadors de la clàusula WHERE: LIKE

SQL: SELECT * FROM Customers WHERE City LIKE 's%';
GenQL:
List<Customers> customers = this.getCustomerManager().select(CustomersFields.CITY.like("s%")); print(customers);





Operadors de la clàusula WHERE: IN (array)

SQL: SELECT * FROM Customers WHERE City IN ('Paris','London')
GenQL:
String[] cities = new String[] { "Paris", "London" }; List<Customers> customers = this.getCustomerManager().select(CustomersFields.CITY.in(cities)); print(customers);





Operadors de la clàusula WHERE: IN (col·lecció)

SQL: SELECT * FROM Customers WHERE City IN ('Paris','London');
GenQL:
List<String> cities = new ArrayList<String>(); cities.add("Paris"); cities.add("London"); List<Customers> customers = this.getCustomerManager().select(CustomersFields.CITY.in(cities)); print(customers);