sql-server - DATALENGTH() 适用于文字,但不适用于变量
问题描述
查询返回 10(这select datalength(cast('12345' as nvarchar))
没关系),但是
declare @string as nvarchar
set @string = cast('12345' as nvarchar)
select datalength(@string)
返回 2 而不是 10。为什么?如何使用 DATALENGHT() 来确定存储在变量中的字符串的数据长度?
解决方案
始终指定n
字符数据的长度。例如
declare @string as nvarchar(30)
set @string = cast('12345' as nvarchar(30))
select datalength(@string)
如果您不这样做,则文档中描述了该行为:
当在数据定义或变量声明语句中未指定 n 时,默认长度为 1。当未使用 CAST 函数指定 n 时,默认长度为 30。
推荐阅读
- python - 即使在 python2 中使用子进程,也无法使用星号 AGI 触发 python 3 代码
- python - Python - 如果找到元素,则循环使用硒中的站点
- solidity - 使用每第 n 个类似来铸造 ERC 令牌的功能
- postgresql - org.postgresql.util.PSQLException:错误:更新或删除表“技能”违反了表“employee_has”的外键约束
- r - R用正则表达式提取变量
- laravel - 如何将任务同时分配给多个用户?
- html - 如何在 DOM 上显示由 API 调用返回的 HTML 响应?
- javascript - 用单词上的链接替换 %a 时出现问题
- sanity - 当我使用“sanity init”成功后尝试执行“sanity start”时出错
- python - 通过 Python 在 *.docx 文件的标头中添加标签