SQLServer 自动截断字符串
发布时间:2020-12-12 12:43:13 所属栏目:MsSql教程 来源:网络整理
导读:测试数据: CREATE TABLE #test(a VARCHAR(1))INSERT INTO #test SELECT '22222222222222222222111'SELECT * FROM #testDROP TABLE #test 执行以上语句会出错并提示: [Err] 22001 - [SQL Server]将截断字符串或二进制数据。 如果希望截断字符串并成功插入,
测试数据: CREATE TABLE #test(a VARCHAR(1)) INSERT INTO #test SELECT '22222222222222222222111' SELECT * FROM #test DROP TABLE #test执行以上语句会出错并提示: [Err] 22001 - [SQL Server]将截断字符串或二进制数据。 如果希望截断字符串并成功插入,通常的做法是在插入时检测长度并使用substring函数做截断处理, 也可使用触发器在插入前判断。此外,SQLServer也有系统参数可以控制是否自动截断: SET ANSI_WARNINGS OFF 此设置只对当前会话有效。可通过以下方法查询当前设置状态: DECLARE @ANSI_WARN VARCHAR(3) = 'OFF' IF (8 & @@OPTIONS) = 8 SET @ANSI_WARN = 'ON' SELECT @ANSI_WARN AS ANSI_WARNINGS 建库或修改库时可以指定该选项: ALTER DATABASE temp SET ANSI_WARNINGS OFF CREATE DATABASE temp SET ANSI_WARNINGS OFF 当然,强烈不推荐这么做。修改该选项后,可在系统库视图中查看: SELECT name,is_ansi_warnings_on FROM sys.databases全局的设定查看方法为: sp_configure 'user options'其中config_value=0则为无数据。设置方法为: EXEC sp_configure 'user options',8 RECONFIGURE 注意:
sp_dboption '数据库名','ansi warnings',1参考: 配置 user options 服务器配置选项、SET ANSI_WARNINGS (Transact-SQL) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读