|
Posted by othellomy on 03/20/07 10:04
On Mar 20, 3:52 pm, "David Portas"
<REMOVE_BEFORE_REPLYING_dpor...@acm.org> wrote:
> On 20 Mar, 06:28, othell...@yahoo.com wrote:
>
>
>
>
>
> > create table t1(c1 int, c2 varchar(10))
> > insert t1 values(1,'Hello')
> > insert t1 values(2,'')
> > insert t1 values(3,NULL)
>
> > select *
> > from t1
>
> > c1 c2
> > 1 Hello
> > 2
> > 3 NULL
>
> > select *
> > from t1
> > where c2 = ' '
>
> > c1 c2
> > 2
>
> > select *
> > from t1
> > where ltrim(rtrim(c2)) is null
>
> > c1 c2
> > 3 NULL
>
> > The last query should have result as following. However sql server
> > 2000 does no list row c1 = 2.
> > c1 c2
> > 2
> > 3 NULL
>
> Why would you think that the result of ltrim(rtrim(c2)) would be NULL
> when c2 is a non-null string? In fact the result is an empty string
> (not the same as NULL) so the answer you got is correct. The row where
> c1=2 should NOT be included.
>
> In SQL, NULL is not the same as an empty string. The only common
> exception that I know of is Oracle, which treats empty strings as
> NULLs.
>
> --
> David Portas, SQL Server MVP
>
> Whenever possible please post enough code to reproduce your problem.
> Including CREATE TABLE and INSERT statements usually helps.
> State what version of SQL Server you are using and specify the content
> of any error messages.
>
> SQL Server Books Online:http://msdn2.microsoft.com/library/ms130214(en-US,SQL.90).aspx
> --- Hide quoted text -
>
> - Show quoted text -
If it is not null then it is definitely not 'any number of spaces' and
match.
select *
from t1
where c2 = ' '
[Back to original message]
|