DATALENGTH 
返回任何表达式所占用的字节数。

解决方案 »

  1.   

    TO:海始于斯:你是开玩笑吧
    谢谢邹建、朱二,我试过了没问题。可是呢,我真正的问题还没有解决,请看:在查询分析器里执行
    create table #TEMP (FLD varchar(10))
    insert into #TEMP (FLD) values ('中华人民共和国新疆维吾尔自治区')
    就出错:
    服务器: 消息 8152,级别 16,状态 9,行 3
    将截断字符串或二进制数据。
    语句已终止于是我改成
    insert into #TEMP (FLD) values (left('中华人民共和国新疆维吾尔自治区',10))
    仍出相同的错,原因是left()也是按字符而不是按字节来算的,它的结果是'中华人民共和国新疆维'。最理想的解决方案是,不用什么left(),它也能自动切除多余的部分,该语句正常执行而不被终止。各位大侠,请赐高招,万分感谢!!!
      

  2.   

    终于找到答案了,以下是范例:SET ANSI_WARNINGS OFF
    insert into #TEMP (FLD) values ('中华人民共和国新疆维吾尔自治区')
    SET ANSI_WARNINGS ONselect * from #TEMP
    结果为:中华人民共不要用left(),它也是用字符计算的(而不是字节).
      

  3.   

    create table #TEMP (FLD varchar(10))
    ---》create table #TEMP (FLD varchar(50))
      

  4.   

    declare @FLD varchar(10)
    set @FLD='中华人民共和国新疆维吾尔自治区'
    create table #TEMP (FLD varchar(10))
    insert into #TEMP (FLD) values (@FLD)
      

  5.   

    或者
    create table #TEMP (FLD varchar(10))
    insert into #TEMP (FLD) values (cast('中华人民共和国新疆维吾尔自治区' as varchar(10)))