如何取字符串(含汉字)中的字节数?

csdnwhycn 2005-06-01 04:41:03
查资料好象DALALENGTH是取字节数的。


declare @nvcInput nvarchar(20)
select @nvcInput='3277中'
select datalength(@nvcInput) --返回值是 10 错误!!!
select datalength('3277中') --返回什是6 正确的!!!
可我要从字符串变量中取字节数的,如何做呢?急,先谢了
...全文
81 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
shiming927 2005-06-01
  • 打赏
  • 举报
回复
好像还是5,环境:sql 2k en sp3

我也有类似需求,但只能通过function/sp解决,望高人指点


--你可以改变字符存储类型来得到你要的结果。

declare @nvcInput nvarchar(20)
select @nvcInput='3277中' -- N'3277中'
select datalength(cast(@nvcInput as varchar(20))) --返回 6 ,符合楼主要求
shiming927 2005-06-01
  • 打赏
  • 举报
回复
用len()可以取出5,len()返回字符数,datalength()返回字节数

要区分中英文,只能写function或sp了
zjcxc 元老 2005-06-01
  • 打赏
  • 举报
回复
--你可以改变字符存储类型来得到你要的结果。

declare @nvcInput nvarchar(20)
select @nvcInput='3277中'
select datalength(cast(@nvcInput as varchar(20))) --返回 6 ,符合楼主要求
zjcxc 元老 2005-06-01
  • 打赏
  • 举报
回复
nvarchar是以双字节保存数据的,任何字符都用两个字节表示。

所以
declare @nvcInput nvarchar(20)
select @nvcInput='3277中'
select datalength(@nvcInput) --返回值是 10 是完全正确的。

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧