sql条件 用=查不出 只能用like

查询筛选一下部门 用存储过程写的
存储过程传值是@Depart nvarchar(20)

运行的时候是
declare @dept nvarchar
select @dept=@Depart

在select里
用 部门=@dept 就取不出来
但是用 部门 like '%'+@dept +'%' 就可以
用like查询出来的比我预计的多
部门是 北京、北京加工厂、上海……一类的

请各位大侠帮忙啦
我用去掉空格
select @dept=replace(@Depart,' ','')

where replace(部门,' ','') = @dept
还是不行呢
是不是和nvarchar(20)或nvarchar有关了?
还是有什么函数能清理掉看不见的字符

第1个回答  2013-01-22
具体要看你的字段特点,如果想让查询的结果准确,就在关键字里输入的更精确些。
1、至于是用 = 还是用 like ,我认为如果使用者对部门不是十分掌握,还是用 like 较好,这样可以在查询结果里明确部门信息,以便在再次查询的时候可以输入更精确的部门。
2、如果是在有客户端的软件里使用,建议看看能否做成查询时部门可以双击来选择,然后存储过程就可以写成 = 了。
3、至于 部门=@dept 取不出数据,说明关键字和字段的内容不同,看看字段里是否有空格。如果是空格问题可以这样:replace(部门,' ','')=@dept追问

用replace还是不行呢

来自:求助得到的回答
第1个回答  2013-01-22
看看你的部门列是什么类型,如果是char类型,可能被补了空格占位本回答被提问者采纳