假如字段名为name,内容为'重构ab'。
如果是name是text类型 substring(Name,1,4)的结果为‘重构’
如果是name是ntext类型 substring(Name,1,4)的结果为‘重构ab’
如果是name是varchar类型 substring(Name,1,4)的结果为‘重构ab’
如果是name是nvarchar类型 substring(Name,1,4)的结果为‘重构ab’为什么varchar与nvarchar的substring结果会相同,而text与ntext的substring结果不同呢?谢谢!!!仅有10分了,很不好意思!

解决方案 »

  1.   

    由于在 text 数据上使用 SUBSTRING 时 start 和 length 指定字节数,因此 DBCS 数据(如日本汉字)可能导致在结果的开始或结束位置拆分字符。此行为与 READTEXT 处理 DBCS 的方式一致。然而,由于偶而会出现奇怪的结果,建议对 DBCS 字符使用 ntext 而非 text这是SQL帮助文档中说的,也就是说substring函数截取的是字符数,而对于text类型截取的是字节数所以后三个一样,第一个只是截取前两个汉字