查询语句 中文乱码

linxy2002 2009-03-09 10:42:27
我要组合自己的查询语句,并且查询出来的列是自己指定的中文字,

declare @sql nvarchar(200)

set @sql = 'select name 姓名 from person'

exec(@sql + 'where id = 12')

想得到如下:
姓名
张三
李四





为什么就不行呢,抱错
Incorrect syntax near '?'.


谢谢大家帮忙

...全文
88 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2009-03-09
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 linxy2002 的回复:]
谢谢大家,已经解决了

set @sql = N'select name 姓名 from person'

加 N 就可以的,以前不知道N可以这样用,以为只可以 N'姓名'

ps:我的数据库是英文的,可能大家用得都是中文的,所以我这直接跑会出错
[/Quote]
恭喜
linxy2002 2009-03-09
  • 打赏
  • 举报
回复
谢谢大家,已经解决了

set @sql = N'select name 姓名 from person'

加 N 就可以的,以前不知道N可以这样用,以为只可以 N'姓名'

ps:我的数据库是英文的,可能大家用得都是中文的,所以我这直接跑会出错
ks_reny 2009-03-09
  • 打赏
  • 举报
回复
[Quote=引用楼主 linxy2002 的帖子:]
我要组合自己的查询语句,并且查询出来的列是自己指定的中文字,

declare @sql nvarchar(200)

set @sql = 'select name 姓名 from person'

exec(@sql + 'where id = 12')

想得到如下:
姓名
张三
李四


为什么就不行呢,抱错
Incorrect syntax near '?'.


谢谢大家帮忙
[/Quote]
先改成

print(@sql + 'where id = 12')

然後看看拼出的SQL語句是否有問題.這樣進步會更快.
dawugui 2009-03-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 linxy2002 的回复:]
不是这个原因,

declare @sql nvarchar(200)

set @sql = 'select name 姓名 from person'

exec(@sql)

直接这样执行也不行
[/Quote]
你直接在查询分析器中:

select name 姓名 from person

也是乱码的话,就是你的数据出问题了.建议字段改为nvarchar(长度),插入数据使用 insert into tb values(N'中文')
blacky8 2009-03-09
  • 打赏
  • 举报
回复

create table person (id varchar(10),[name] varchar(20))
insert person
select '1', '王五' union all
select '2', '李四' union all
select '12', '张三'


declare @sql nvarchar(200)

set @sql = 'select [name] 姓名 from person'

exec(@sql)


姓名
--------------------
王五
李四
张三

(3 row(s) affected)

liu_ying_shan 2009-03-09
  • 打赏
  • 举报
回复
id是字符型的还是整数?加引号?
blacky8 2009-03-09
  • 打赏
  • 举报
回复
NAME关键字,改成[NAME]试试
htl258_Tony 2009-03-09
  • 打赏
  • 举报
回复
exec(@sql + ' where id = 12') 加个空格
blacky8 2009-03-09
  • 打赏
  • 举报
回复
WHERE 语句前少空格,
乌龟老大太快了~~!!
linxy2002 2009-03-09
  • 打赏
  • 举报
回复
不是这个原因,

declare @sql nvarchar(200)

set @sql = 'select name 姓名 from person'

exec(@sql)

直接这样执行也不行
dawugui 2009-03-09
  • 打赏
  • 举报
回复
declare @sql nvarchar(200) 

set @sql = 'select name 姓名 from person'

exec(@sql + ' where id = 12')


declare @sql nvarchar(200) 

set @sql = 'select name 姓名 from person '

exec(@sql + 'where id = 12')
dawugui 2009-03-09
  • 打赏
  • 举报
回复
declare @sql nvarchar(200)

set @sql = 'select name 姓名 from person'

exec(@sql + ' where id = 12') 少了个空格.

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧