select @tempUser = RTRIM(@username) + '_temp'
利用RTRIM()去空格

解决方案 »

  1.   

    然!谢谢你!
    可是为什么用java调用的时候它自己会把不足的位数用空格补满而用sql server的查询分析器却不会?
      

  2.   

    在 Sql server 中 nvarchar(20) 是定长的,就是说不管实际的数据长度是多长,他的长度始终是20个字符,不足20个字符的在后面补空格,而 varchar(20) 是个变长的数据类型,在没有超过20个字符之前他是按照数据实际的长度做该字段的长度
      

  3.   

    楼上的再回去看看书吧,char型才是定长的,nvarchar也是变长的,只不过nvarchar是unicode编码格式,这种编码格式,不管字符是汉字还是英文字母,都占一个字节的位置;而varchar和char都是ASCII编码格式,汉字占两个字节,英文字母占一个字节,同样对应char型也有nchar型
      

  4.   

    是的,三楼的你说错了,呵呵.
    在用JDBC调用存储过程时我都调用了 String.trim()保证把传入的值两头的空格去掉了,但是当通过jdbcOdbc桥把参数传入sql server后我发现只在 select @tempUser = @username + '_temp'这句里出现了把@username补足20位长度,而在类似 select * from tableName where username = @username的语句中@username 长度没变化,仍然是我传入的值.所以我觉得很奇怪,也没想到用RTRIM()去除空格.
      

  5.   

    不好意思啊,是我的错。
    不过在 sql server2000 中好象所有的字符编码都是 Unicode 编码的,你们可以试试使用 like 'a_' ,其中的 '_' 代表一个任意的字符(包括中文)