中文问题

vinsonyue 2006-02-20 04:52:43
一个表,Table ( A Char(1),B Nchar(20))
有一笔记录: A,Null
Update Table Set B='啊' Where A='A'
那个'啊'将会是?号.
如果用
Update Table Set B=N'啊' Where A='A'
可以得到正确的结果.

如果建立一个存储过程:
Create Procedure DBO.Update @A Char(1),@B NChar(20)
As
Update Table Set B=@B Where A=@A

运行:Execute Procedure Update 'A','啊'
那个'啊'将还会是问号

请问在存储过程中应该怎样写?谢谢

...全文
103 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzhs 2006-02-21
  • 打赏
  • 举报
回复
如果你是直接在Query Analyzer里调用的话,自己在调用的时候加上N。
如下:
Create Procedure DBO.Update @A Char(1),@B NChar(20)
As
Update Table Set B=@B Where A=@A

运行:Execute Procedure Update 'A',N'啊'

如果是在程序里,只要将传入参数的类型设置为NChar就可以了。

或者使用动态SQL语句,自己手工在“'”前加上N。
vinsonyue 2006-02-21
  • 打赏
  • 举报
回复
declare @A Nchar(20)
select @A='啊'

print cast(@A as Nchar(20))
print convert(Nchar(20),@A)

这个我早就试过了,不行,还是显示问号.

如果select @A=N'啊'是可以.但存储过程传参数的话是没有那个N 的,所以还是有问题.

请各位继续给多些方法.谢谢
sunyong790903 2006-02-20
  • 打赏
  • 举报
回复

Create table ttt1 (A Char(1),B NChar(20))
insert ttt1 select 'A','我'

select * from ttt1

create proc DBO.ttt1_Update @A char(1),@B Nchar(20)
as
update ttt1 set B=convert(nchar(20),@B) where A=@A

exec ttt1_update 'A','啊'
wgsasd311 2006-02-20
  • 打赏
  • 举报
回复
--TRY
Create Procedure DBO.[Update] (@A Char(1),@B NChar(20))
As
Update [Table] Set B=CAST(@B AS NCHAR(20)) Where A=@A
wgsasd311 2006-02-20
  • 打赏
  • 举报
回复
--TRY
Create Procedure DBO.Update @A Char(1),@B NChar(20)
As
Update Table Set B=CAST(@B AS NCHAR(20) Where A=@A

vinsonyue 2006-02-20
  • 打赏
  • 举报
回复
UP

22,301

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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