Cláusula WHERE (Microsoft Access SQL)
Aplica-se ao: Access 2013 | Access 2016
Especifica que os registros das tabelas listadas na cláusula FROM são afetados por uma instrução SELECT, UPDATE ou DELETE.
Sintaxe
SELECT fieldlist FROM tableexpression WHERE criteria
Uma instrução SELECT que contém uma cláusula WHERE tem estas partes:
Parte | Descrição |
---|---|
fieldlist | O nome do(s) campo(s) a ser recuperado junto com qualquer alias de nome de campo, predicados de seleção (ALL, DISTINCT, DISTINCTROW ou TOP) ou outras opções da instrução SELECT. |
tableexpression | O nome da tabela ou tabelas de onde os dados são recuperados. |
criteria | Uma expressão que deve ser satisfeita pelos registros para serem incluídos nos resultados da consulta. |
Comentários
O mecanismo de banco de dados do Access seleciona os registros que atendem às condições listadas na cláusula WHERE. Se você não especificar uma cláusula WHERE, sua consulta retornará todas as linhas da tabela. If you specify more than one table in your query and you have not included a WHERE clause or a JOIN clause, your query generates a Cartesian product of the tables.
A WHERE é opcional, mas, quando incluída, segue a FROM. Por exemplo, você pode selecionar todos os funcionários do departamento de vendas (WHERE Dept = 'Sales'
) ou todos os clientes com idade entre 18 e 30 () ou todos os clientes com 18 e 30 anos de idade (WHERE Age Between 18 And 30
).
Se você não usar uma cláusula JOIN para executar operações de junção do SQL em várias tabelas, o objeto Recordset resultante não será atualizável.
WHERE is similar to HAVING. WHERE determines which records are selected. Similarly, once records are grouped with GROUP BY, HAVING determines which records are displayed.
Use a cláusula WHERE para eliminar registros que você não deseja agrupar por uma cláusula GROUP BY.
Use various expressions to determine which records the SQL statement returns. For example, the following SQL statement selects all employees whose salaries are more than $21,000:
SELECT LastName, Salary
FROM Employees
WHERE Salary > 21000;
A WHERE clause can contain up to 40 expressions linked by logical operators, such as And and Or.
Ao inserir um nome de campo que contém um espaço ou pontuação, coloque-o entre colchetes ([ ]). Por exemplo, uma tabela de informações do cliente pode incluir informações sobre clientes específicos:
SELECT [Customer's Favorite Restaurant]
Quando você especifica o argumento de critérios , os literais de data devem estar no formato dos EUA, mesmo que você não esteja usando a versão dos EUA do mecanismo de banco de dados do Microsoft Jet. Por exemplo, 10 de maio de 1996 é escrito no formato 10/5/96 no Reino Unido e 5/10/96 nos Estados Unidos. Não deixe de colocar literais de data com o sinal de número (#), conforme mostrado nos exemplos a seguir.
To find records dated May 10, 1996 in a United Kingdom database, you must use the following SQL statement:
SELECT *
FROM Orders
WHERE ShippedDate = #5/10/96#;
You can also use the DateValue function which is aware of the international settings established by Microsoft Windows®. For example, use this code for the United States:
SELECT *
FROM Orders
WHERE ShippedDate = DateValue('5/10/96');
And use this code for the United Kingdom:
SELECT *
FROM Orders
WHERE ShippedDate = DateValue('10/5/96');
Observação
If the column referenced in the criteria string is of type GUID, the criteria expression uses a slightly different syntax:
WHERE ReplicaID = {GUID {12345678-90AB-CDEF-1234-567890ABCDEF}}
Be sure to include the nested braces and hyphens as shown.
Exemplo
O exemplo a seguir supõe a existência de um campo hipotético chamado Salary em uma tabela Employees. Note that this field does not actually exist in the Northwind database Employees table.
Esse exemplo seleciona os campos LastName e FirstName de cada registro em que o sobrenome é King. Ele chama o procedimento EnumFields, o qual você pode encontrar no exemplo da instrução SELECT.
Sub WhereX()
Dim dbs As Database, rst As Recordset
' Modify this line to include the path to Northwind
' on your computer.
Set dbs = OpenDatabase("Northwind.mdb")
' Select records from the Employees table where the
' last name is King.
Set rst = dbs.OpenRecordset("SELECT LastName, " _
& "FirstName FROM Employees " _
& "WHERE LastName = 'King';")
' Populate the Recordset.
rst.MoveLast
' Call EnumFields to print the contents of the
' Recordset.
EnumFields rst, 12
dbs.Close
End Sub
Confira também
- Fórum do Access para desenvolvedores
- Ajuda do Access em support.office.com
- Fóruns do Access no UtterAccess
- Central de ajuda da programação VBA e desenvolvedor do Access (FMS)
- Postagens do Access no StackOverflow
Suporte e comentários
Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.