Condiciones de búsqueda (Transact-SQL)Search Condition (Transact-SQL)

SE APLICA A: síSQL Server síAzure SQL Database síAzure Synapse Analytics (SQL DW) síAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

Es una combinación de uno o varios predicados que utilizan los operadores lógicos AND, OR y NOT.Is a combination of one or more predicates that use the logical operators AND, OR, and NOT.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

-- Syntax for SQL Server and Azure SQL Database  
  
<search_condition> ::=  
    MATCH(<graph_search_pattern>) | <search_condition_without_match> | <search_condition> AND <search_condition>

<search_condition_without_match> ::= 
    { [ NOT ] <predicate> | ( <search_condition_without_match> ) }   
    [ { AND | OR } [ NOT ] { <predicate> | ( <search_condition_without_match> ) } ]   
[ ,...n ]   
  
<predicate> ::=   
    { expression { = | < > | ! = | > | > = | ! > | < | < = | ! < } expression   
    | string_expression [ NOT ] LIKE string_expression   
  [ ESCAPE 'escape_character' ]   
    | expression [ NOT ] BETWEEN expression AND expression   
    | expression IS [ NOT ] NULL   
    | CONTAINS   
  ( { column | * } , '<contains_search_condition>' )   
    | FREETEXT ( { column | * } , 'freetext_string' )   
    | expression [ NOT ] IN ( subquery | expression [ ,...n ] )   
    | expression { = | < > | ! = | > | > = | ! > | < | < = | ! < }   
  { ALL | SOME | ANY} ( subquery )   
    | EXISTS ( subquery )     }   
    
<graph_search_pattern> ::=
    { <node_alias> { 
                      { <-( <edge_alias> )- } 
                    | { -( <edge_alias> )-> }
                    <node_alias> 
                   } 
    }
  
<node_alias> ::=
    node_table_name | node_table_alias 

<edge_alias> ::=
    edge_table_name | edge_table_alias
-- Syntax for Azure SQL Data Warehouse and Parallel Data Warehouse  
  
< search_condition > ::=   
    { [ NOT ] <predicate> | ( <search_condition> ) }   
    [ { AND | OR } [ NOT ] { <predicate> | ( <search_condition> ) } ]   
[ ,...n ]   
  
<predicate> ::=   
    { expression { = | < > | ! = | > | > = | < | < = } expression   
    | string_expression [ NOT ] LIKE string_expression   
    | expression [ NOT ] BETWEEN expression AND expression   
    | expression IS [ NOT ] NULL   
    | expression [ NOT ] IN (subquery | expression [ ,...n ] )   
    | expression [ NOT ] EXISTS (subquery)     }   

ArgumentosArguments

<search_condition><search_condition>
Especifica las condiciones de las filas devueltas en el conjunto de resultados de una instrucción SELECT, una expresión de consulta o una subconsulta.Specifies the conditions for the rows returned in the result set for a SELECT statement, query expression, or subquery. En una instrucción UPDATE, especifica las filas que se van a actualizar.For an UPDATE statement, specifies the rows to be updated. En una instrucción DELETE, especifica las filas que se van a eliminar.For a DELETE statement, specifies the rows to be deleted. No hay límite en el número de predicados que se pueden incluir en una condición de búsqueda de una instrucción Transact-SQLTransact-SQL.There is no limit to the number of predicates that can be included in a Transact-SQLTransact-SQL statement search condition.

<graph_search_pattern><graph_search_pattern>
Especifica el patrón de coincidencia del grafo.Specifies the graph match pattern. Para obtener más información sobre los argumentos de esta cláusula, vea MATCH (Transact-SQL)For more information about the arguments for this clause, see MATCH (Transact-SQL)

NOTNOT
Niega la expresión booleana que especifica el predicado.Negates the Boolean expression specified by the predicate. Para obtener más información, vea NOT (Transact-SQL).For more information, see NOT (Transact-SQL).

yAND
Combina dos condiciones y se evalúa como TRUE cuando ambas condiciones son TRUE.Combines two conditions and evaluates to TRUE when both of the conditions are TRUE. Para obtener más información, vea AND (Transact-SQL).For more information, see AND (Transact-SQL).

O BIENOR
Combina dos condiciones y se evalúa como TRUE cuando alguna de las condiciones es TRUE.Combines two conditions and evaluates to TRUE when either condition is TRUE. Para obtener más información, vea OR (Transact-SQL).For more information, see OR (Transact-SQL).

< predicate >< predicate >
Es una expresión que devuelve TRUE, FALSE o UNKNOWN.Is an expression that returns TRUE, FALSE, or UNKNOWN.

expressionexpression
Es un nombre de columna, una constante, una función, una variable, una subconsulta escalar o cualquier combinación de nombres de columna, constantes y funciones conectados mediante uno o varios operadores o una subconsulta.Is a column name, a constant, a function, a variable, a scalar subquery, or any combination of column names, constants, and functions connected by an operator or operators, or a subquery. La expresión también puede contener la expresión CASE.The expression can also contain the CASE expression.

Nota

Las constantes y las variables de cadena no Unicode usan la página de códigos que corresponde a la intercalación predeterminada de la base de datos.Non-Unicode string constants and variables use the code page that corresponds to the default collation of the database. Pueden producirse conversiones de página de códigos cuando se trabaja únicamente con datos de caracteres no Unicode y se hace referencia a los tipos de datos de caracteres no Unicode char, varchar y text.Code page conversions can occur when working with only non-Unicode character data and referencing the non-Unicode character data types char, varchar, and text. SQL ServerSQL Server convierte las variables y constantes de cadena no Unicode a la página de códigos que corresponde a la intercalación de la columna a la que se hace referencia o que se ha especificado mediante COLLATE, si esa página de códigos es diferente a la que corresponde a la intercalación predeterminada de la base de datos.converts non-Unicode string constants and variables to the code page that corresponds to the collation of the referenced column or specified using COLLATE, if that code page is different than the code page that corresponds to the default collation of the database. Los caracteres que no se encuentran en la nueva página de códigos se traducen en un carácter similar, si se encuentra una coincidencia, o bien se convierten en el carácter de sustitución predeterminado "?".Any characters not found in the new code page will be translated to a similar character, if a best-fit mapping can be found, or else will be converted to the default replacement character of "?".

Cuando se trabaja con varias páginas de códigos, las constantes de caracteres pueden llevar un prefijo con la letra mayúscula 'N' y se pueden usar variables Unicode para evitar las conversiones de páginas de códigos.When working with multiple code pages, character constants can be prefixed with the uppercase letter 'N', and Unicode variables can be used, to avoid code page conversions.

=
Es el operador que se utiliza para probar la igualdad entre dos expresiones.Is the operator used to test the equality between two expressions.

<>
Es el operador que se utiliza para probar si dos expresiones no son iguales entre sí.Is the operator used to test the condition of two expressions not being equal to each other.

!=!=
Es el operador que se utiliza para probar si dos expresiones no son iguales entre sí.Is the operator used to test the condition of two expressions not being equal to each other.

>
Es el operador que se utiliza para probar si una expresión es mayor que la otra.Is the operator used to test the condition of one expression being greater than the other.

>=
Es el operador que se utiliza para probar si una expresión es mayor o igual que la otra expresión.Is the operator used to test the condition of one expression being greater than or equal to the other expression.

!>!>
Es el operador que se utiliza para probar si una expresión no es mayor que la otra expresión.Is the operator used to test the condition of one expression not being greater than the other expression.

<
Es el operador que se utiliza para probar si una expresión es menor que la otra.Is the operator used to test the condition of one expression being less than the other.

<=
Es el operador que se utiliza para probar si una expresión es menor o igual que la otra expresión.Is the operator used to test the condition of one expression being less than or equal to the other expression.

!<!<
Es el operador que se utiliza para probar si una expresión no es menor que la otra expresión.Is the operator used to test the condition of one expression not being less than the other expression.

string_expressionstring_expression
Es una cadena de caracteres y caracteres comodín.Is a string of characters and wildcard characters.

[ NOT ] LIKE[ NOT ] LIKE
Indica que la siguiente cadena de caracteres se utilizará con la coincidencia de patrón.Indicates that the subsequent character string is to be used with pattern matching. Para obtener más información, vea LIKE (Transact-SQL).For more information, see LIKE (Transact-SQL).

ESCAPE 'escape_ character'ESCAPE 'escape_ character'
Permite buscar un carácter comodín en una cadena de caracteres sin que funcione como carácter comodín.Allows for a wildcard character to be searched for in a character string instead of functioning as a wildcard. escape_character es el carácter que se coloca delante del carácter comodín para indicar este uso especial.escape_character is the character that is put in front of the wildcard character to indicate this special use.

[ NOT ] BETWEEN[ NOT ] BETWEEN
Especifica un intervalo inclusivo de valores.Specifies an inclusive range of values. Utilice AND para separar los valores inicial y final.Use AND to separate the starting and ending values. Para obtener más información, vea BETWEEN (Transact-SQL).For more information, see BETWEEN (Transact-SQL).

IS [ NOT ] NULLIS [ NOT ] NULL
Especifica una búsqueda de valores NULL o de valores que no son NULL, en función de las palabras clave utilizadas.Specifies a search for null values, or for values that are not null, depending on the keywords used. Una expresión que contenga un operador bit a bit o aritmético se evalúa como NULL si uno de los operandos es NULL.An expression with a bitwise or arithmetic operator evaluates to NULL if any one of the operands is NULL.

CONTAINSCONTAINS
Busca en columnas que contienen datos basados en caracteres coincidencias precisas o menos precisas (parciales) con palabras o frases, a una cierta distancia las unas de las otras y coincidencias ponderadas.Searches columns that contain character-based data for precise or less precise (fuzzy) matches to single words and phrases, the proximity of words within a certain distance of one another, and weighted matches. Esta opción solo puede usarse con instrucciones SELECT.This option can only be used with SELECT statements. Para obtener más información, vea CONTAINS (Transact-SQL).For more information, see CONTAINS (Transact-SQL).

FREETEXTFREETEXT
Proporciona una forma sencilla de realizar consultas en lenguaje natural al buscar, en columnas con datos basados en caracteres, valores que coincidan con el significado en lugar de con las palabras exactas del predicado.Provides a simple form of natural language query by searching columns that contain character-based data for values that match the meaning instead of the exact words in the predicate. Esta opción solo puede usarse con instrucciones SELECT.This option can only be used with SELECT statements. Para obtener más información, vea FREETEXT (Transact-SQL).For more information, see FREETEXT (Transact-SQL).

[ NOT ] IN[ NOT ] IN
Especifica la búsqueda de una expresión, basada en si la expresión está incluida en una lista o excluida de ella.Specifies the search for an expression, based on whether the expression is included in or excluded from a list. La expresión de búsqueda puede ser una constante o un nombre de columna, y la lista puede ser un conjunto de constantes o, más normalmente, una subconsulta.The search expression can be a constant or a column name, and the list can be a set of constants or, more typically, a subquery. Encierre la lista de valores entre paréntesis.Enclose the list of values in parentheses. Para más información, vea IN (Transact-SQL).For more information, see IN (Transact-SQL).

subquerysubquery
Se puede considerar como una instrucción SELECT restringida y es similar a <expresión_de_consulta> en la instrucción SELECT.Can be considered a restricted SELECT statement and is similar to <query_expression> in the SELECT statement. No se permiten la cláusula ORDER BY ni la palabra clave INTO.The ORDER BY clause and the INTO keyword are not allowed. Para obtener más información, vea SELECT (Transact-SQL).For more information, see SELECT (Transact-SQL).

ALLALL
Se utiliza con un operador de comparación y una subconsulta.Used with a comparison operator and a subquery. Devuelve TRUE para <predicate> si todos los valores obtenidos de la subconsulta satisfacen la operación de comparación, o FALSE si no todos los valores satisfacen la comparación o si la subconsulta no devuelve filas a la instrucción externa.Returns TRUE for <predicate> when all values retrieved for the subquery satisfy the comparison operation, or FALSE when not all values satisfy the comparison or when the subquery returns no rows to the outer statement. Para obtener más información, vea ALL (Transact-SQL).For more information, see ALL (Transact-SQL).

{ SOME | ANY }{ SOME | ANY }
Se utiliza con un operador de comparación y una subconsulta.Used with a comparison operator and a subquery. Devuelve TRUE para <predicate> si algún valor obtenido de la subconsulta satisface el operador de comparación, o FALSE si ningún valor de la subconsulta satisface la comparación o si la subconsulta no devuelve filas a la instrucción externa.Returns TRUE for <predicate> when any value retrieved for the subquery satisfies the comparison operation, or FALSE when no values in the subquery satisfy the comparison or when the subquery returns no rows to the outer statement. En caso contrario, la expresión es UNKNOWN.Otherwise, the expression is UNKNOWN. Para obtener más información, vea SOME | ANY (Transact-SQL).For more information, see SOME | ANY (Transact-SQL).

EXISTSEXISTS
Se utiliza con una subconsulta para probar la existencia de filas devueltas por la subconsulta.Used with a subquery to test for the existence of rows returned by the subquery. Para obtener más información, vea EXISTS (Transact-SQL).For more information, see EXISTS (Transact-SQL).

NotasRemarks

El orden de prioridad de los operadores lógicos es NOT (el más alto), seguido de AND y OR.The order of precedence for the logical operators is NOT (highest), followed by AND, followed by OR. Se pueden utilizar paréntesis para invalidar esta prioridad en una condición de búsqueda.Parentheses can be used to override this precedence in a search condition. El orden de evaluación de los operadores lógicos puede variar dependiendo de las opciones elegidas por el optimizador de consultas.The order of evaluation of logical operators can vary depending on choices made by the query optimizer. Para obtener más información sobre el funcionamiento de los operadores lógicos en valores lógicos, vea AND (Transact-SQL), OR (Transact-SQL) y NOT (Transact-SQL).For more information about how the logical operators operate on logic values, see AND (Transact-SQL), OR (Transact-SQL), and NOT (Transact-SQL).

EjemplosExamples

A.A. Usar WHERE con la sintaxis de LIKE y ESCAPEUsing WHERE with LIKE and ESCAPE syntax

En el siguiente ejemplo se buscan filas en las que la columna LargePhotoFileName tenga los caracteres green_ y se usa la opción ESCAPE porque _ es un carácter comodín.The following example searches for the rows in which the LargePhotoFileName column has the characters green_, and uses the ESCAPE option because _ is a wildcard character. Sin especificar la opción ESCAPE, la consulta buscaría valores de descripción que contuvieran la palabra green seguida de cualquier carácter distinto del carácter _.Without specifying the ESCAPE option, the query would search for any description values that contain the word green followed by any single character other than the _ character.

USE AdventureWorks2012 ;  
GO  
SELECT *   
FROM Production.ProductPhoto  
WHERE LargePhotoFileName LIKE '%greena_%' ESCAPE 'a' ;  

B.B. Usar la sintaxis de WHERE y LIKE con datos UnicodeUsing WHERE and LIKE syntax with Unicode data

En el siguiente ejemplo se utiliza la cláusula WHERE para recuperar la dirección de correo de una empresa que está fuera de los Estados Unidos (US) y en una ciudad cuyo nombre empieza con Pa.The following example uses the WHERE clause to retrieve the mailing address for any company that is outside the United States (US) and in a city whose name starts with Pa.

USE AdventureWorks2012 ;  
GO  
SELECT AddressLine1, AddressLine2, City, PostalCode, CountryRegionCode    
FROM Person.Address AS a  
JOIN Person.StateProvince AS s ON a.StateProvinceID = s.StateProvinceID  
WHERE CountryRegionCode NOT IN ('US')  
AND City LIKE N'Pa%' ;  

Ejemplos: Azure Synapse Analytics (SQL DW)Azure Synapse Analytics (SQL DW) y Almacenamiento de datos paralelosParallel Data WarehouseExamples: Azure Synapse Analytics (SQL DW)Azure Synapse Analytics (SQL DW) and Almacenamiento de datos paralelosParallel Data Warehouse

C.C. Usar WHERE con LIKEUsing WHERE with LIKE

En el siguiente ejemplo se buscan filas en las que la columna LastName tenga los caracteres and.The following example searches for the rows in which the LastName column has the characters and.

-- Uses AdventureWorks  
  
SELECT EmployeeKey, LastName  
FROM DimEmployee  
WHERE LastName LIKE '%and%';  

D.D. Usar la sintaxis de WHERE y LIKE con datos UnicodeUsing WHERE and LIKE syntax with Unicode data

En el ejemplo siguiente se usa la cláusula WHERE para realizar una búsqueda Unicode en la columna LastName.The following example uses the WHERE clause to perform a Unicode search on the LastName column.

-- Uses AdventureWorks  
  
SELECT EmployeeKey, LastName  
FROM DimEmployee  
WHERE LastName LIKE N'%and%';  

Consulte tambiénSee Also

Funciones de agregado (Transact-SQL) Aggregate Functions (Transact-SQL)
CASE (Transact-SQL) CASE (Transact-SQL)
CONTAINSTABLE (Transact-SQL) CONTAINSTABLE (Transact-SQL)
Cursores (Transact-SQL) Cursors (Transact-SQL)
DELETE (Transact-SQL) DELETE (Transact-SQL)
Expresiones (Transact-SQL) Expressions (Transact-SQL)
FREETEXTTABLE (Transact-SQL) FREETEXTTABLE (Transact-SQL)
FROM (Transact-SQL) FROM (Transact-SQL)
Operadores (Transact-SQL) Operators (Transact-SQL)
UPDATE (Transact-SQL)UPDATE (Transact-SQL)