MSSQL中如何正确取出中文字段的长度

Bald_eagle 2000-10-10 11:49:00
我们现在正在开发的程序中有一单位名称字段,里面既可输入中文又可能输入英文字符,需要取出这个字段的长度,字段名为A02,我们现在使用 LENGTH(A02)函数取其长度,要求LENGTH(A02)>= 8 ,在程序中使用时,不能正确计算中文的字段长度。如我们输入4个汉字并回车后,程序总是提示“字符个数小于8”这个错误信息,若直接输入8个英文字符,则不提示错误信息。我们想了一些办法,没能解决。
恳请专家为我们解答,谢谢!
...全文
647 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhulan 2000-11-21
  • 打赏
  • 举报
回复
非常感谢,让我也学了一招。
Bald_eagle 2000-11-20
  • 打赏
  • 举报
回复
不好意思,前一段时间太忙,没时间上网。其实这个问题已经解决了,可以使用ms-sqlserver中的系统函数datalength()来实现。
argent_huang 2000-10-14
  • 打赏
  • 举报
回复
我想到了,用 LEN 加 LENB 函数。
LENB(STRING)-LEN(STRING) 得到真实的字节数。
good luck to you
argent_huang 2000-10-14
  • 打赏
  • 举报
回复
不知你的问题是否已经解决,我有一个方法。
汉字ASCII码为负数。
你那里只需分别判断八个字符是否为负数再LEN()就可以了。
但我的程序要判断上万个字符。
不知你有否好方法赐教赐教?
Bald_eagle 2000-10-11
  • 打赏
  • 举报
回复
不好意思,没有把问题说清楚。我要问的是如何在SQL SERVER中正确的返回字符串的长度,
字符串中既有中文,也有西文。
我使用的是SQL SERVER 7.0

实际上就是chump兄所说的问题。
chump 2000-10-10
  • 打赏
  • 举报
回复
不知你使用SQL什么版本,我用2000测试如下:
假如A2长度为10,则A2中能保存5个汉字、10个英文字符或2汉字+6个英文字符(其它有多种组合,但汉字算两个字符,英文算一个,总长度不超过10个):
len('0123456789')=10
len('为人民服务')=5
len('你好123456')=8
所以测试结果发现,len函数在计算长度时不论汉字或英文每个长度均为1,不知是否为BUG?否则自己做个函数,区分中英文分别计算!

34,587

社区成员

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

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