sqlserver CAST(AS nvarchar)的坑 —— 类型转换截断数
发布时间:2022-12-07 15:33:02 所属栏目:MsSql教程 来源:网络
导读: 开发反馈数据同步时,写入表的数据被截断,例如:
查看该表对应字段类型为nvarchar(100),而同步使用的插入语句是INSERT INTO xxx VALUES(CAST ( AS nvarchar))。
创建一个测试表插入测试数
查看该表对应字段类型为nvarchar(100),而同步使用的插入语句是INSERT INTO xxx VALUES(CAST ( AS nvarchar))。
创建一个测试表插入测试数
开发反馈数据同步时,写入表的数据被截断,例如: 查看该表对应字段类型为nvarchar(100),而同步使用的插入语句是INSERT INTO xxx VALUES(CAST ( AS nvarchar))。 创建一个测试表插入测试数据。
可以看到经过转换的字符串被截断了,而未转换的正常。怀疑CAST(AS nvarchar)有自动截断功能,去查一下官方文档的定义发现有如下介绍: 如果在字段定义或变量声明时不指定nvarchar(n) n的值Mssq类型转换函数,n默认是1;如果在CAST和CONVERT函数中,不指定n则默认是30。根据前面截图也可以看到 ABC_DEFGHIJKL,Reference:ABC-31 刚好是30位,长度为60。 所以如果我们希望插入时数据不被截断有两种方法:
另外可以再验证下官方文档说的,在字段定义或变量声明时不指定nvarchar(n) n的值,n默认是1
去看sqlserver中表的定义,可以看到确实是nvarchar(1) 参考 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐