关于MYSQL截取中英文字符串(最高只能发100分的帖子)

宁波朱超 2013-05-06 08:00:44
需求:SELECT length('佑佳A诗尚BCDEFG您好'); 返回25
因为一个汉字是 3个长度 ,一个英文是1个长度。

我想通过一句SQL语句 从左第一位截取 长度为不大于10的 字符串 也就是获取 '佑A佳诗'

可以不~~!?
...全文
302 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
huabing84 2013-05-07
  • 打赏
  • 举报
回复
MySQL 5.0以上的版本: 1.一个汉字占多少长度与编码有关: UTF-8:一个汉字=3个字节 GBK:一个汉字=2个字节 2.varchar(n)表示n个字符,无论汉字和英文,Mysql都能存入n个字符,仅是实际字节长度有所区别 3.MySQL检查长度,可用SQL语言: select LENGTH(fieldname) from tablename 来查看 varchar(2) 里面的2指的是字符数。不是字节数。1个字符占几个字节就取决于编码类型。
Rotel-刘志东 2013-05-07
  • 打赏
  • 举报
回复
--设置字符集 set names lantin1 --截取字符 select substring('佑佳A诗尚BCDEFG您好',1,10)
wwwwb 2013-05-07
  • 打赏
  • 举报
回复
SET NAMES LATIN1; SELECT SUBSTRING('佑佳A诗尚BCDEFG您好',1,10) OR DELIMITER $$ DROP PROCEDURE IF EXISTS EE$$ CREATE PROCEDURE EE() BEGIN SET NAMES LATIN1; SELECT SUBSTRING('佑佳A诗尚BCDEFG您好',1,10) INTO OUTFILE 'R:/TEMP/123.TXT'; END$$ DELIMITER ;
宁波朱超 2013-05-07
  • 打赏
  • 举报
回复
看来那个设置字符集是逃不掉的了,跟领导商量下,虽然不是 一条语句 但是还是感谢大家。
rucypli 2013-05-06
  • 打赏
  • 举报
回复
mysql> SELECT substring('佑佳A诗尚BCDEFG您好',1,10); +---------------------------------------------+ | substring('佑佳A诗尚BCDEFG您好',1,10) | +---------------------------------------------+ | 佑佳A诗 | +---------------------------------------------+
ACMAIN_CHM 2013-05-06
  • 打赏
  • 举报
回复
set names 'gbk'; 然后再试。

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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