declare @s char
set @s='a'
while @s<'z'
begin
print cast(ascii(@s) as char)+'------'+@s
set @s=char(cast(ascii(@s) as int)+1)
end是小写字母和自己的ascii码的对应
打印结果注意:没有小写字母z把代码改成
declare @s char
set @s='a'
while @s<='z'
begin
print cast(ascii(@s) as char)+'------'+@s
set @s=char(cast(ascii(@s) as int)+1)
end
会一直显示到ascii码一直到254,且129后面都是空的
不理解这个循环条件
求教

解决方案 »

  1.   

    获取0-255代表的字符declare @i as int
    declare @sql as varchar(100)
    set @i = 0
    while @i <= 255
    begin
      set @sql = 'select char(' + ltrim(@i) + ') [' + ltrim(@i) + ']'
      exec(@sql)
      set @i = @i + 1
    end如果我回答错了。
    不,懂;帮,顶;学,习;赚,分。
    虽然这么回贴可能会被删除。
    谁他妈的删除了就是个王八蛋。
    强烈抗议CSDN这种即当婊子又想立贞洁牌坊的恶劣行为!!!
    有本事,就封杀我!!!理由在这里:
    他妈的一帮管理员有神经病啊???
    http://topic.csdn.net/u/20110422/10/1a381057-7a7b-41d9-8969-ad1f5b77f24a.html?38665
      

  2.   

    如果我回答错了。
    不,懂;帮,顶;学,习;赚,分。
    虽然这么回贴可能会被删除。
    谁他妈的删除了就是个王八蛋。
    强烈抗议CSDN这种即当婊子又想立贞洁牌坊的恶劣行为!!!
    有本事,就封杀我!!!理由在这里:
    他妈的一帮管理员有神经病啊???
    http://topic.csdn.net/u/20110422/10/1a381057-7a7b-41d9-8969-ad1f5b77f24a.html?38665
    最好给出完整的表结构,测试数据,计算方法和正确结果.否则耽搁的是你宝贵的时间。
    如果有多表,表之间如何关联?
    如何更有效地在SQL Server论坛上提问
    http://topic.csdn.net/u/20100716/19/6f132f16-20e4-418c-8dee-b99d5f86d320.html?75910
    [code=SQL]
      

  3.   

    如果我回答错了。
    不,懂;帮,顶;学,习;赚,分。
    虽然这么回贴可能会被删除。
    谁他妈的删除了就是个王八蛋。
    强烈抗议CSDN这种即当婊子又想立贞洁牌坊的恶劣行为!!!
    有本事,就封杀我!!!理由在这里:
    他妈的一帮管理员有神经病啊???
    http://topic.csdn.net/u/20110422/10/1a381057-7a7b-41d9-8969-ad1f5b77f24a.html?38665
    最好给出完整的表结构,测试数据,计算方法和正确结果.否则耽搁的是你宝贵的时间。
    如果有多表,表之间如何关联?
    如何更有效地在SQL Server论坛上提问
    http://topic.csdn.net/u/20100716/19/6f132f16-20e4-418c-8dee-b99d5f86d320.html?75910
    [code=SQL]
      

  4.   


    您的代码  运行后提示  查询超过结果网格中可以显示的最大结果集数。网格中仅显示前 100 个结果集。
    呵呵  谢谢您的回复
    不过我的问题是循环的条件while @s<='z'
    为什么会执行到ascii码254
      

  5.   

    循环的条件while @s<='z'
    为什么会执行到ascii码254  呢  
      

  6.   

    我很惭愧
    set @sql = 'select char(' + ltrim(@i) + ') [' + ltrim(@i) + ']'
    不理解 为啥要用ltrim?
    求教
      

  7.   


    回为 @i 为数值型,要转为字符型才可以进行操作, ltrim() 函数默认将内容转为字符型,用它的含义类似于
    convert(varchar,@i)
      

  8.   

    因为当@s等'z'的下一个值,即'{'时,你说'{'和'z'谁大?编译器不知道,然后@s继续增加。
    char类型即一个字节,长度2的8次方,最大表示255【@s=char(cast(ascii(@s) as int)+1)】,减去此处的1,那么就是254喽
      

  9.   

    哦 有点明白啦
    我一直以为对于字符的比较会 自动转换成ascii码值大小的比较
    谢谢您的帮助!