|
本帖最后由 流浪铁匠 于 2018-7-1 18:02 编辑
这里说的区别
不是大家熟知的参数数量差异或者提取方向和位置(功能)差异或者left/right的2参能缺省的这种应用差异
而是从提取结果与数据范围性质等微软没在帮助介绍里提到过的少有人知的3个性质
1,针对unicode编码大于65535的字符的提取结果差异
2,参数为小数时的自动舍入差异
3,参数数值范围差异(明确的数据类型)
1,针对unicode编码大于65535的字符的提取结果差异
这点在之前的帖子就多次验证了
首先说下unicode编码大于65535的字符的特性
测试表明该类字符的len的结果为2,为4字节编码
left与right在提取这类字符时,2参识别的是字符数量(不是len结果数量)
2参为1或缺省时能完整提取这类字符
但mid的3参为1时,仅提取一半的字符编码(左边2个字节或右边2个字节的一半编码)
结果不是完整的字符编码故会报错
但如果把2个不同的该类字符分别提取一半的字符编码并用&合并,如果合并后的完整编码能对应某字符
则返回结果就是这个字符,即能达到字符的重组效果
2,在提取字符数量的参数为小数时
mid是严格取整的(2/3参数都是)
但left和right的临界舍入点还是0.99999976146501
3,函数参数的明确数据类型
测试结果证实mid的3参的数据类型也是长整型(上限2147483647,超过则报错)("又"字是因为今天的另1贴介绍的round也具有2/3这2个相同性质)
而left和right无此限制
以上为目前的测试发现
当然,一般不需要考虑这些区别,但是,用这3点足以证明,mid和left/right存在本质上的提取差异,在一些极端情况下需要注意这些区别
|
评分
-
3
查看全部评分
-
|