读书人

关于嵌套查询的有关问题

发布时间: 2012-05-27 05:42:30 作者: rapoo

关于嵌套查询的问题。
qzb:群组表
qzmc:群组名称
yhb:用户表
yhm:用户名
qzb中有qzmc,yhb中也有qzmc。
以下代码用Access数据库时一切正常,但换成SQL Server2000后,如果用户名是英文一切正常,但用户名是汉字时查不出结果。
select * from qzb
where qzmc=(select qzmc from yhb where yhm=:yhm)
起先我想是不是数据类型的问题,因为qzmc,yhm用的是varchar。但改为nvarchar后结果还是一样。
害的我只有分开两段写才解决问题:
select qzmc from yhb
where yhm=:yhm
..........
select * from qzb
where qzmc=:qzmc
..........
为什么会这样,请高手指教。谢谢!

[解决办法]
子查询若返回的只有一个值,则没有错,改成这下面这样吧

select * from qzb
where qzmc=(select top 1 qzmc from yhb where yhm=:yhm)

select * from qzb
where qzmc in (select qzmc from yhb where yhm=:yhm)


[解决办法]
不用参数,直接拼凑sql,结果对不对?
[解决办法]
应该是字符集的问题,楼主可更改一下字符集。
[解决办法]
能说下错误提示吗
[解决办法]

探讨
我觉得也是字符集的问题,但是我将varchar改为nvarchar也不行(用户名是汉字时)。但用户名是英文时不管使用那种类型都可以正常出结果。nvarchar是unicode字符集吧?
那到底是什么地方出问题了呢?操作系统的字符集应该是unicode的吧。

读书人网 >.NET

热点推荐