mot*_*tto 3 sql t-sql sql-server
尝试使用UPDATE命令为表上的字符串字段添加前缀.出于某种原因,我得到了
字符串或二进制数据将被截断.
异常,即使我的数据长度很容易适合该字段.
使用SQL Server 2008 R2标准版和SSMS 2008 R2.
模板:学习者是nvarchar(60)
模板:学习者是一个nvarchar(30),使用60字节,如sp_help所示
select LEN('Aaaaaaaa' + LEFT(learner, 52)) myLen from Template order by myLen desc
>>> max len = 31
update Template set learner = 'Aaaaaaaa' + LEFT(learner, 52)
>>> String or binary data would be truncated.
update Template set learner = 'Aaaaaaaa' + LEFT(learner, 52)
>>> String or binary data would be truncated.
update Template set learner = CAST('Aaaaaaaa' + LEFT(learner, 52) AS NVARCHAR(60))
>>> String or binary data would be truncated.
Run Code Online (Sandbox Code Playgroud)
以下工作:
SELECT CAST('Aaaaaaaa' + LEFT(learner, 52) AS NVARCHAR(60)) FROM Template
Run Code Online (Sandbox Code Playgroud)
您可以尝试忽略此消息
SET ANSI_WARNINGS OFF
update ...
SET ANSI_WARNINGS ON
Run Code Online (Sandbox Code Playgroud)
感谢您的回复。
看起来我对sp_help和sp_columns的长度值感到迷惑。因为它是NVARCHAR列,所以长度是指以字节为单位的长度,而不是字符数。这是因为NVARCHAR = Unicode(UTF-16)=>每个字符2个字节。
查看CREATE脚本揭示了事实。sp_columns上的PRECISION字段也显示字符数。
| 归档时间: |
|
| 查看次数: |
14628 次 |
| 最近记录: |