Mi sono imbattuto in alcuni comportamenti interessanti su SQL Server (osservati nel 2005 e 2012) oggi che speravo che qualcuno potesse spiegare.
Una query che esegue un confronto utilizzando =
su un campo NVARCHAR ha ignorato lo spazio finale nella stringa (o ha automaticamente tagliato il valore prima del confronto) ma la stessa query che utilizza l' like
operatore non ha ignorato lo spazio. Le regole di confronto utilizzate sono Latin1_General_CI_AS nel 2012.
Considera questo SQL Fiddle: http://sqlfiddle.com/#!6/72262/4
Si noti che l' like
operatore non restituisce un risultato per la stringa di spazio finale, ma l' =
operatore lo fa. Perchè è questo?
Punti bonus: non riesco a replicarlo su un campo VARCHAR, avrei pensato che uno spazio sarebbe stato gestito allo stesso modo in entrambi i tipi di dati - è vero?
MyString+'x' = ltrim(rtrim(MyString))+'x'
come suggerito su questo blog