I have a table where one column may contain data which includes extended
ASCII characters (like ♥,♦,♣....)
When I search for the same using select
N is used for search extended ascii characters
select * from testasci where name like N'santosh♥'
The problem is that the characters you are entering are NOT in the ASCII range at all. VARCHAR(20) is the wrong column datatype for your data.
Fixed:
create table testasci(id int,name nvarchar(20))
insert into testasci values(1,N'santosh');
insert into testasci values(2,N'santosh♥');
insert into testasci values(3,N'santosh♦');
insert into testasci values(4,N'santosh2');
insert into testasci values(5,N'santoshσ');
insert into testasci values(6,N'santosh3');
select * from testasci where name like N'santosh♥';
Looking at your original definition of varchar(20), I have created an SQLFiddle to show the problem.
select id, a.name, number, ascii(substring(a.name,number,1))
from testasci a
join master..spt_values v
on v.number between 1 and len(a.name) and type='P'
where a.id in (2,3)
order by id, number
You'll notice that the 8th position of each of ID 2 and 3 contain the ASCII character (63), which is the literal question mark (?), not your special Unicode character. So you have lost it as soon as it hit the table column.