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

SQL Server 2008 празен низ срещу пространство

varchar s и равенството са трънливи в TSQL. LEN функция казва:

Връща броя на знаците, а не броя на байтовете на дадения низов израз, с изключение на крайните празни места .

Трябва да използвате DATALENGTH за да получите истински byte брой на въпросните данни. Ако имате данни в Unicode, имайте предвид, че стойността, която получавате в тази ситуация, няма да е същата като дължината на текста.

print(DATALENGTH(' ')) --1
print(LEN(' '))        --0

Когато става въпрос за равенство на изразите, двата низа се сравняват за равенство по следния начин:

  • Вземете по-къс низ
  • Подложка с заготовки докато дължината стане равна на тази на по-дългия низ
  • Сравнете двете

Това е средната стъпка, която причинява неочаквани резултати - след тази стъпка вие ефективно сравнявате празно пространство с празно пространство - следователно се вижда, че те са равни.

LIKE се държи по-добре от = в ситуацията на "празни", защото не изпълнява празно запълване на шаблона, който се опитвахте да съпоставите:

if '' = ' '
print 'eq'
else
print 'ne'

Ще даде eq докато:

if '' LIKE ' '
print 'eq'
else
print 'ne'

Ще даде ne

Внимавайте с LIKE въпреки това:не е симетричен:третира крайния празен интервал като значим в шаблона (RHS), но не и израза за съвпадение (LHS). Следното е взето от тук:

declare @Space nvarchar(10)
declare @Space2 nvarchar(10)

set @Space = ''
set @Space2 = ' '

if @Space like @Space2
print '@Space Like @Space2'
else
print '@Space Not Like @Space2'

if @Space2 like @Space
print '@Space2 Like @Space'
else
print '@Space2 Not Like @Space'

@Space Not Like @Space2
@Space2 Like @Space


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Календарна таблица за Data Warehouse

  2. Динамично маскиране на данни в SQL Server за начинаещи

  3. Примери за форматиране на „datetimeoffset“ в SQL Server с помощта на стандартни форматни низове (T-SQL)

  4. Оценяване на настройката за мониторинг на производителността на вашата база данни

  5. Естествено присъединяване в SQL Server