用SQL如何判断一个中英文混合字符串的字节长度?
一个英文字符按一个字节,中文字符按俩字节算=========================有一个很长的varchar(8000)
里面保存的是中英文混合字符串
如何取前200字节?计算方式同上==============================
最好能写成函数形式

解决方案 »

  1.   

    晕,怎么老是发错东西datalength()是按字节计算的,1个字母1字节,一个汉字两字节至于取前200字节,则用substring实现
      

  2.   

    --示例--取前200字节declare @s varchar(8000)
    set @s='用SQL如何判断一个中英文混合字符串的字节长度?.....要操作的字符串'--取前200字节
    select 前200字节=cast(substring(cast(@s as varbinary(8000)),1,200) as varchar(8000))
      

  3.   

    --第一个取字节的本来就是函数
    --第二个写成函数就是:
    create function f_left(
    @str varchar(8000),
    @len int
    )returns varchar(8000)
    as
    begin
    return(cast(substring(cast(@str as varbinary(8000)),1,@len) as varchar(8000)))
    end
    go--调用
    select dbo.f_left('afasdjf',200)