是这样的,我想用substring截取字符串,但老是截不准,请问有什么办法吗?

解决方案 »

  1.   

    不知道你用在什么数据类型上,char,text?
      

  2.   

    nvarchar,主要原因是sql server好像将汉字也作为一个字符处理
      

  3.   

    substring就是按字符数来处理的,而不是按字节数。
    下面是联机帮助说的,好像也不够清楚SUBSTRING ( expression , start , length ) 由于在 text 数据上使用 SUBSTRING 时 start 和 length 指定字节数,因此 DBCS 数据(如日本汉字)可能导致在结果的开始或结束位置拆分字符。此行为与 READTEXT 处理 DBCS 的方式一致。然而,由于偶而会出现奇怪的结果,建议对 DBCS 字符使用 ntext 而非 text。如果 expression 是支持的字符数据类型,则返回字符数据。如果 expression 是支持的 binary 数据类型,则返回二进制数据。返回字符串的类型与给定表达式的类型相同(表中显示的除外)。给定的表达式 返回类型 
    text         varchar 
    image        varbinary 
    ntext        nvarchar 
    注释
    在字符数中必须指定使用 ntext、char 或 varchar 数据类型的偏移量(start 和 length)。在字节数中必须指定使用 text、image、binary 或 varbinary 数据类型的偏移量。 
      

  4.   

    哦,你用nvarchar的话,所有的字符都是双字节的。
      

  5.   

    我找了中办法,基本上可以了,先将其转化为text型,再截取
    substring(convert(text,content),1,length)
    虽然可能差一个字符,不过对我来说一进满足了