存储过程中 申明varchar类型变量最长能有多长? varchar 最长8000要显示完全则在查询分析器->工具->选项->结果->每列最多字符数 改成8000 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 to : didoleo(冷月无声) 我改过来了,显示全了,谢谢!但是 我得@sqlStr 是个sql语句,从列中考出直接执行可以,为什么用exec (@sqlStr)错呢 你把 @sqlStr 值 print 出来看看!print @sqlStr --exec (@sqlStr),括号有问题exec (@sqlStr) 我print 出来 直接执行print出来的语句是没错得 ,但是在exec(@sqlStr) 就出错 print 出来是:select lian0,case rtrim(ge1) when '-2' then ( select xinghao from am93 where pinming ='EPH'and chicunming = substring(@wrtStd,1,1)) when '-1' then '' when '' then (select zhu1 from #temzhu) when '0' then cast((select cast(cast(zhu1 as decimal(10,5)) as int) from #temzhu) as char(10)) else ( select zhu1 from #temzhu ) end from am01 where pinming='EPH'执行后得错误是:服务器: 消息 137,级别 15,状态 2,行 1必须声明变量 '@wrtStd'。服务器: 消息 156,级别 15,状态 1,行 1在关键字 'when' 附近有语法错误。服务器: 消息 156,级别 15,状态 1,行 1在关键字 'as' 附近有语法错误。服务器: 消息 156,级别 15,状态 1,行 1在关键字 'end' 附近有语法错误。但是我在前面有声明@wrtStd的。 谢谢各位的热情。我得问题解决了。^_^ 有什么最简单的方法能构取得 varchar 类型的字符串的整数部分,如 52.12 或 52.61 取得的值都是:52 , 而不是52.00 或 53.00 --tryDECLARE @Str AS VARCHAR(10)SET @Str = '52.12'SELECT CAST(FLOOR(@Str) AS INT) varchar(8000)查询分析器->工具->选项->结果->每列最多字符数 改成8000 select cast(round(52.12,0 ) as int) -->> 52select cast(round(52.61,0 ) as int) -->> 53如果你的52.12是varcharselect cast(round('52.12',0 ) as int) -->>52select cast(round('52.61',0 ) as int) -->>53 如何实现在所选的记录级前面自动加上序号,sql中不能含有变量,不用identity 函数?? 有什么方可以知道某一字符在字符串中的个数, 如:‘-’在‘KHE-HUD-JJ-YED’中的个数。越简单越好!谢谢。 什么啊,两位的回答太简练了,我查了一下帮助 没有 什么 我是说在sqlserver2000中。go on …… 有什么方可以知道某一字符在字符串中的个数, 如:‘-’在‘KHE-HUD-JJ-YED’中的个数select len('KHE-HUD-JJ-YED')-len(replace('KHE-HUD-JJ-YED','-','')) 什么啊,两位的回答太简练了,我查了一下帮助 没有 什么 我是说在sqlserver2000中。go on …… 是他们在你的帖子里做个标记 不应该在sqlserver2000里找,应该翻英文字典 ^_^ 呵呵,小弟无知了,难怪呢! 继续我的问题???谢谢 didoleo(冷月无声) ,你的方法很好。还有没有更简单一些的。 如何实现在所选的记录级前面自动加上序号,sql中不能含有变量,不用identity 函数?? 如何实现在所选的记录级前面自动加上序号,sql中不能含有变量,不用identity 函数?? select in 不排重问题 如何根据日期中的月份判断日期类型? 帮我看下这2句SQL为什么选出的数量不同 SQL 数据库操作 USE 的反命令是什么? 请叫一个存储过程的语句 记得在asp中可以得到存储过程的多个记录集rs,不知道在java中如何得到? 部分截取字段 如何获得存储的消息 SQL数据导入问题? SQL语句中的连接优化问题,希望高手详细解释 数据导入问题!如果有非法数据,生成一个Excel文件! 怎样返回储存过程查询的记录数?不要rs的。
print @sqlStr
exec (@sqlStr)
select lian0,case rtrim(ge1)
when '-2' then ( select xinghao from am93 where pinming ='EPH'and chicunming = substring(@wrtStd,1,1))
when '-1' then ''
when '' then (select zhu1 from #temzhu)
when '0' then cast((select cast(cast(zhu1 as decimal(10,5)) as int) from #temzhu) as char(10))
else ( select zhu1 from #temzhu ) end from am01 where pinming='EPH'
执行后得错误是:
服务器: 消息 137,级别 15,状态 2,行 1
必须声明变量 '@wrtStd'。
服务器: 消息 156,级别 15,状态 1,行 1
在关键字 'when' 附近有语法错误。
服务器: 消息 156,级别 15,状态 1,行 1
在关键字 'as' 附近有语法错误。
服务器: 消息 156,级别 15,状态 1,行 1
在关键字 'end' 附近有语法错误。但是我在前面有声明@wrtStd的。
SET @Str = '52.12'
SELECT CAST(FLOOR(@Str) AS INT)
查询分析器->工具->选项->结果->每列最多字符数 改成8000
select cast(round(52.61,0 ) as int) -->> 53如果你的52.12是varcharselect cast(round('52.12',0 ) as int) -->>52
select cast(round('52.61',0 ) as int) -->>53
go on ……
select len('KHE-HUD-JJ-YED')-len(replace('KHE-HUD-JJ-YED','-',''))
go on …… 是他们在你的帖子里做个标记
不应该在sqlserver2000里找,应该翻英文字典 ^_^
谢谢 didoleo(冷月无声) ,你的方法很好。还有没有更简单一些的。