sql >> Base de Datos >  >> RDS >> Sqlserver

Cláusula SQL WHERE que coincide con valores con espacios finales

Ese es el resultado esperado:en SQL Server el = el operador ignora los espacios finales al hacer la comparación.

SQL Server sigue la especificación ANSI/ISO SQL-92 (Sección 8.2, Reglas generales #3) sobre cómo comparar cadenas con espacios. El estándar ANSI requiere relleno para las cadenas de caracteres utilizadas en las comparaciones para que sus longitudes coincidan antes de compararlas. El relleno afecta directamente la semántica de los predicados de las cláusulas WHERE y HAVING y otras comparaciones de cadenas de Transact-SQL. Por ejemplo, Transact-SQL considera que las cadenas 'abc' y 'abc ' son equivalentes para la mayoría de las operaciones de comparación.

La única excepción a esta regla es el predicado LIKE. Cuando el lado derecho de una expresión de predicado LIKE presenta un valor con un espacio final, SQL Server no rellena los dos valores con la misma longitud antes de que se produzca la comparación. Debido a que el propósito del predicado LIKE, por definición, es facilitar la búsqueda de patrones en lugar de simples pruebas de igualdad de cadenas, esto no viola la sección de la especificación ANSI SQL-92 mencionada anteriormente.

Fuente