当前位置: 代码迷 >> Sql Server >> SQL Server2008字符串操作函数right,该怎么解决
  详细解决方案

SQL Server2008字符串操作函数right,该怎么解决

热度:54   发布时间:2016-04-24 10:42:47.0
SQL Server2008字符串操作函数right
本帖最后由 Laplace2014 于 2014-04-16 08:40:15 编辑
begin
       declare @test_String char(60),@test_String1 char(60),
                      @test_String2 char(60)
                       
       set @test_String='Hello SQL Server2008!'
       set @test_String1=left(@test_String,5)
       set @test_String2=right(@test_String,5)

       select @test_String,@test_String1,@test_String2
end

@test_String结果输出为空,而@test_String输出正确,后发现待截取字符串定义必须为varchar()
求解释原因
------解决方案--------------------
char和varchar的区别是,一个存储定长一个是变长。  定义成char(10)那么他存储的就是10个字符,不足的用空格补足,varchar是根据你的实际使用情况来存储,所以你的right得到的就是空。
------解决方案--------------------
因为char是后面填充占位的。

  DECLARE @test_String CHAR(60) ,
    @test_String1 CHAR(60) ,
    @test_String2 varCHAR(60)
                       
  SET @test_String = 'Hello SQL Server2008!'
  SET @test_String1 = LEFT(@test_String, 5)
  SET @test_String2 = RIGHT(@test_String, 5)

SELECT DATALENGTH(@test_String2)  --5  取出来是占位的哦。定长数据

  SELECT    @test_String ,
            @test_String1 ,
            @test_String2
------解决方案--------------------
输出的结果并不是空,而是5个空格。您可以复制一下输出结果,可以看到会出现很多空格的。
  相关解决方案