Condición de búsqueda (Transact-SQL)

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Punto de conexión de análisis SQL en Microsoft Fabric Almacenamiento en Microsoft Fabric

Combinación de uno o varios predicados que usan los operadores ANDlógicos , ORy NOT.

Convenciones de sintaxis de Transact-SQL

Sintaxis

Sintaxis para SQL Server, Azure SQL Database y Azure SQL Instancia administrada.

<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
    | expression IS [ NOT ] DISTINCT FROM
    | 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

Sintaxis para Azure Synapse Analytics y Almacenamiento de datos paralelos.

< 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)
    }

Argumentos

<search_condition>

Especifica las condiciones de las filas devueltas en el conjunto de resultados para una SELECT instrucción, expresión de consulta o subconsulta. Para una UPDATE instrucción , especifica las filas que se van a actualizar. Para una DELETE instrucción , especifica las filas que se van a eliminar. No hay ningún límite para el número de predicados que se pueden incluir en una condición de búsqueda de instrucciones Transact-SQL.

<graph_search_pattern>

Especifica el patrón de coincidencia de gráficos. Para obtener más información sobre los argumentos de esta cláusula, vea MATCH.

NOT

Niega la expresión booleana que especifica el predicado. Para obtener más información, vea NOT.

Y

Combina dos condiciones y se evalúa como TRUE cuando ambas condiciones son TRUE. Para obtener más información, consulte AND.

O BIEN

Combina dos condiciones y se evalúa como TRUE cuando cualquiera de las condiciones es TRUE. Para obtener más información, consulte OR.

<predicate>

Expresión que devuelve TRUE, FALSEo UNKNOWN. Para obtener más información, vea Predicados.

expression

Especifica 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 conectadas por un operador o operadores, o una subconsulta. La expresión también puede contener la CASE expresión .

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. 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. SQL Server convierte constantes y variables que no son Unicode en la página de códigos que corresponde a la intercalación de la columna a la que se hace referencia o se especifica mediante COLLATE, si esa página de códigos es diferente de la página de códigos que corresponde a la intercalación predeterminada de la base de datos. Los caracteres que no se encuentran en la nueva página de códigos se traducen a un carácter similar si se puede encontrar una asignación más adecuada o, de lo contrario, se convierten al carácter de reemplazo predeterminado de ?.

Al trabajar con varias páginas de códigos, las constantes de caracteres se pueden prefijar con la letra Nmayúscula y se pueden usar variables Unicode para evitar conversiones de página de códigos.

Operador =

Operador que se usa para probar la igualdad entre dos expresiones.

Operador <>

Operador que se usa para probar la condición de dos expresiones que no son iguales entre sí.

Operador !=

Operador que se usa para probar la condición de dos expresiones que no son iguales entre sí.

Operador >

Operador que se usa para probar la condición de una expresión que es mayor que la otra.

Operador >=

Operador utilizado para probar la condición de una expresión que es mayor o igual que la otra expresión.

Operador !>

Operador que se usa para probar la condición de una expresión que no es mayor que la otra expresión.

Operador <

Operador utilizado para probar la condición de una expresión que es menor que la otra.

Operador <=

Operador utilizado para probar la condición de una expresión que es menor o igual que la otra expresión.

Operador !<

Operador que se usa para probar la condición de una expresión que no es menor que la otra expresión.

string_expression

Cadena de caracteres y caracteres comodín.

[ NOT ] GUSTAR

Indica que la siguiente cadena de caracteres se utilizará con la coincidencia de patrón. Para obtener más información, vea LIKE.

ESCAPE 'escape_ carácter'

Permite buscar un carácter comodín en una cadena de caracteres sin que funcione como carácter comodín. escape_character es el carácter que se coloca delante del carácter comodín para indicar este uso especial.

[ NOT ] ENTRE

Especifica un intervalo inclusivo de valores. Use AND para separar los valores inicial y final. Para obtener más información, vea BETWEEN.

IS [ NOT ] NULL

Especifica una búsqueda de valores NULL o para los valores que no son NULL, en función de las palabras clave usadas. Una expresión con un operador aritmético o bit a NULL bit se evalúa como si alguno de los operandos es NULL.

IS [ NOT ] DISTINCT FROM

Compara la igualdad de dos expresiones y garantiza un resultado verdadero o falso, incluso si uno o ambos operandos son NULL. Para obtener más información, consulte IS [NOT] DISTINCT FROM (Transact-SQL).

CONTAINS

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. Esta opción solo se puede usar con SELECT instrucciones . Para obtener más información, vea CONTAINS.

FREETEXT

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. Esta opción solo se puede usar con SELECT instrucciones . Para obtener más información, vea FREETEXT.

[ 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. 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. Encierre la lista de valores entre paréntesis. Para obtener más información, vea IN.

subquery

Se puede considerar una instrucción restringida SELECT y es similar a <query_expression> en la SELECT instrucción . No ORDER BY se permiten la cláusula ni la INTO palabra clave . Para obtener más información, vea SELECT.

ALL

Se utiliza con un operador de comparación y una subconsulta. Devuelve TRUE para <predicate> cuando todos los valores recuperados para la subconsulta satisfacen la operación de comparación, o FALSE cuando no todos los valores cumplen la comparación o cuando la subconsulta no devuelve ninguna fila a la instrucción externa. Para obtener más información, vea ALL.

{ SOME | ANY }

Se utiliza con un operador de comparación y una subconsulta. Devuelve TRUE para <predicate> cuando cualquier valor recuperado para la subconsulta satisface la operación de comparación, o FALSE cuando ningún valor de la subconsulta satisface la comparación o cuando la subconsulta no devuelve ninguna fila a la instrucción externa. De lo contrario, la expresión es UNKNOWN. Para obtener más información, vea SOME | ANY.

EXISTS

Se utiliza con una subconsulta para probar la existencia de filas devueltas por la subconsulta. Para obtener más información, consulte EXISTS.

Comentarios

El orden de prioridad de los operadores lógicos es NOT (el más alto), seguido de AND y OR. Se pueden utilizar paréntesis para invalidar esta prioridad en una condición de búsqueda. El orden de evaluación de los operadores lógicos puede variar dependiendo de las opciones elegidas por el optimizador de consultas. Para obtener más información sobre cómo funcionan los operadores lógicos en valores lógicos, consulte AND, OR y NOT.

Ejemplos

Los ejemplos de código de Transact-SQL de este artículo utilizan la base de datos de ejemplo AdventureWorks2022 o AdventureWorksDW2022, que se pueden descargar desde la página principal de Ejemplos y proyectos de la comunidad de Microsoft SQL Server.

A Uso de WHERE con la sintaxis LIKE y ESCAPE

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. Si no especifica la ESCAPE opción , la consulta busca los valores de descripción que contengan la palabra green seguida de cualquier carácter que no sea el _ carácter.

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

B. Uso de la sintaxis WHERE y LIKE con datos Unicode

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.

USE AdventureWorks2022;
GO

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

Ejemplos: Azure Synapse Analytics y Sistema de la plataforma de análisis (PDW)

C. Uso de WHERE con LIKE

En el siguiente ejemplo se buscan filas en las que la columna LastName tenga los caracteres and.

-- Uses AdventureWorks

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

D. Uso de la sintaxis WHERE y LIKE con datos Unicode

En el ejemplo siguiente se usa la cláusula WHERE para realizar una búsqueda Unicode en la columna LastName.

-- Uses AdventureWorks

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