字符型显示错误!

xuaimin0402 2009-04-07 09:09:01
ALTER PROCEDURE kq
(@tbname char(13)='KQBRUSH200904',@flag char(1)='N',@skrq char(10)='2009-04-26')
AS
set @sql='insert '+@tbname +' select name,no,bmno,bmmc,'+@skrq+',null from rs where no='+@no
execute (@sql)
为什么插入的skrq显示为1979啊? ,@skrq char(10)的啊!
请帮忙解决一下,谢谢!
...全文
60 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuaimin0402 2009-04-07
  • 打赏
  • 举报
回复
谢谢!我现在理解了!大家辛苦啦!
幸运的意外 2009-04-07
  • 打赏
  • 举报
回复
set @sql='insert '+@tbname +' select name,no,bmno,bmmc,'''+@skrq+''',null from rs where no='+@no
楼主请注意红色部分,如果不这么些,那么您传入的参数将被错误解析,造成数据出错。你可以在检查时打印出你的语句看看,实际字符串是:
insert KQBRUSH200904 select name,no,bmno,bmmc,2009-04-26,null from rs where no= ,所以,日起字符串不能正确反映他的值了。
claro 2009-04-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xuaimin0402 的回复:]
谢谢啊,问题解决了!
但是我还是不分不清什么时候用单引号,什么时候用三个单引号''',请讲解一下,万分感谢!
[/Quote]
比如结果是'a',引用时改成'''a''';如果是a,引用时直接用'a'即可。
xuaimin0402 2009-04-07
  • 打赏
  • 举报
回复
我自己仿照你的修改了,但是理由还是不清楚,请讲解一下!
[Quote=引用 3 楼 xuaimin0402 的回复:]
set @sql='update '+@tbname+' set sksj='''+@sksj+''' where skrq='''+@skrq +'''and no='''+@no
这句该如何修改呢?

引用 1 楼 htl258 的回复:
SQL codeALTER PROCEDURE kq
(@tbname char(13)='KQBRUSH200904',@flag char(1)='N',@skrq char(10)='2009-04-26')
AS
set @sql='insert '+@tbname +' select name,no,bmno,bmmc,'''+@skrq+''',null from rs where no='+@no
execute (@sql)

要这样.
[/Quote]
xuaimin0402 2009-04-07
  • 打赏
  • 举报
回复
set @sql='update '+@tbname+' set sksj='''+@sksj+''' where skrq='''+@skrq +'''and no='''+@no
这句该如何修改呢?

[Quote=引用 1 楼 htl258 的回复:]
SQL codeALTER PROCEDURE kq
(@tbname char(13)='KQBRUSH200904',@flag char(1)='N',@skrq char(10)='2009-04-26')
AS
set @sql='insert '+@tbname +' select name,no,bmno,bmmc,'''+@skrq+''',null from rs where no='+@no
execute (@sql)

要这样.
[/Quote]
xuaimin0402 2009-04-07
  • 打赏
  • 举报
回复
谢谢啊,问题解决了!
但是我还是不分不清什么时候用单引号,什么时候用三个单引号''',请讲解一下,万分感谢!

[Quote=引用 1 楼 htl258 的回复:]
SQL codeALTER PROCEDURE kq
(@tbname char(13)='KQBRUSH200904',@flag char(1)='N',@skrq char(10)='2009-04-26')
AS
set @sql='insert '+@tbname +' select name,no,bmno,bmmc,'''+@skrq+''',null from rs where no='+@no
execute (@sql)

要这样.
[/Quote]
htl258_Tony 2009-04-07
  • 打赏
  • 举报
回复
ALTER      PROCEDURE kq  
(@tbname char(13)='KQBRUSH200904',@flag char(1)='N',@skrq char(10)='2009-04-26')
AS
set @sql='insert '+@tbname +' select name,no,bmno,bmmc,'''+@skrq+''',null from rs where no='+@no
execute (@sql)
要这样.

22,181

社区成员

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

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