我这样写update tb set name=SUBSTRING(name,1,5)执行后,不起作用,用SELECT length = DATALENGTH(name), name FROM tb WHERE DATALENGTH(name) >5查询,还是看到原来的数据,5位以后的没有去掉,是不是那里错了,请指教,一定要用left吗

解决方案 »

  1.   

    name是什么类型?char,varchar?如果是:
    update tb set name = left(name,5) where len(rtrim(name)) > 5
    update tb set name = substring(name,1,5) where len(rtrim(name)) > 5都可以.
      

  2.   

    去掉空格
    rtrim()
    ltrim()
      

  3.   

    nvarchar类型,潇洒老乌龟不行呀
      

  4.   

    可以啊.
    create table #t(
    name nvarchar(20)
    )
    insert into #t values(N'afdf')
    insert into #t values(N'daefefad')
    insert into #t values(N'adfeh')
    insert into #t values(N'jv;jrgjf')
    insert into #t values(N'utrrdvmb')update #t set name=left(name,5) where len(name)>5select name from #tdrop table #t
      

  5.   

    加上rtrim()
    update tb set name=SUBSTRING(rtrim(name),1,5)