Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Valores correspondentes da cláusula SQL WHERE com espaços à direita


Esse é o resultado esperado:no SQL Server o = operador ignora espaços à direita ao fazer a comparação.

O SQL Server segue a especificação ANSI/ISO SQL-92 (Seção 8.2, , Regras gerais nº 3) sobre como comparar strings com espaços. O padrão ANSI requer preenchimento para as cadeias de caracteres usadas nas comparações para que seus comprimentos correspondam antes de compará-las. O preenchimento afeta diretamente a semântica dos predicados das cláusulas WHERE e HAVING e outras comparações de cadeia de caracteres Transact-SQL. Por exemplo, o Transact-SQL considera as strings 'abc' e 'abc ' equivalentes para a maioria das operações de comparação.

A única exceção a esta regra é o predicado LIKE. Quando o lado direito de uma expressão de predicado LIKE apresenta um valor com um espaço à direita, o SQL Server não preenche os dois valores com o mesmo comprimento antes que a comparação ocorra. Como a finalidade do predicado LIKE, por definição, é facilitar pesquisas de padrões em vez de simples testes de igualdade de strings, isso não viola a seção da especificação ANSI SQL-92 mencionada anteriormente.

Fonte