Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Klauzula SQL WHERE dopasowująca wartości z końcowymi spacjami

To jest oczekiwany wynik:w SQL Server = operator ignoruje końcowe spacje podczas porównywania.

SQL Server jest zgodny ze specyfikacją ANSI/ISO SQL-92 (sekcja 8.2, , Ogólne zasady #3) dotyczącą porównywania ciągów znaków ze spacjami. Standard ANSI wymaga wypełnienia ciągów znaków używanych w porównaniach, aby ich długości były zgodne przed porównaniem. Dopełnienie bezpośrednio wpływa na semantykę predykatów klauzuli WHERE i HAVING oraz inne porównania ciągów Transact-SQL. Na przykład Transact-SQL uważa ciągi 'abc' i 'abc' za równoważne dla większości operacji porównania.

Jedynym wyjątkiem od tej reguły jest predykat LIKE. Gdy prawa strona wyrażenia predykatu LIKE zawiera wartość ze spacją na końcu, SQL Server nie wypełnia tych dwóch wartości o tej samej długości przed wykonaniem porównania. Ponieważ celem predykatu LIKE z definicji jest ułatwienie wyszukiwania wzorców, a nie prostych testów równości ciągów, nie narusza to wspomnianej wcześniej sekcji specyfikacji ANSI SQL-92.

Źródło



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JSON_VALUE() Przykłady w SQL Server (T-SQL)

  2. Pięć najważniejszych kwestii dotyczących projektowania indeksu bazy danych w programie SQL Server

  3. SELECT DISTINCT ignoruje różne przypadki

  4. Instalowanie wystąpienia klastra pracy awaryjnej programu SQL Server — część 1

  5. „Błąd krytyczny połączenia wewnętrznego” podczas wykonywania natywnie skompilowanej procedury przechowywanej w programie SQL Server 2019 (znany błąd)