Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL WHERE клауза, съответстваща на стойности с крайни интервали

Това е очакваният резултат:в SQL Server = операторът игнорира крайните интервали, когато прави сравнението.

SQL Server следва ANSI/ISO SQL-92 спецификацията (раздел 8.2, , Общи правила #3) за това как да сравнявате низове с интервали. Стандартът ANSI изисква подпълване на символните низове, използвани при сравнения, така че техните дължини да съвпадат, преди да ги сравняват. Допълването пряко засяга семантиката на предикатите на клаузата WHERE и HAVING и други сравнения на низове на Transact-SQL. Например Transact-SQL счита низовете 'abc' и 'abc' за еквивалентни за повечето операции за сравнение.

Единственото изключение от това правило е предиката LIKE. Когато дясната страна на предикатен израз LIKE включва стойност с интервал в края, SQL Server не допълва двете стойности с една и съща дължина, преди да се извърши сравнението. Тъй като целта на предиката LIKE по дефиниция е да улесни търсенето на шаблони, а не прости тестове за равенство на низовете, това не нарушава секцията от спецификацията ANSI SQL-92, спомената по-рано.

Източник



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какъв размер използвате за varchar(MAX) във вашата декларация за параметри?

  2. Възможно ли е да се извършват множество актуализации с един оператор UPDATE SQL?

  3. Предимства от използването на нотация на SQL редна позиция?

  4. Как да убиете всички текущи връзки към база данни на SQL Server 2005?

  5. Връщане на стойност от команда на SQL Server Insert с помощта на c#