求sql语句将一个字段。按指定字符分成几个字段

daodaoyu222 2009-10-26 02:26:24
求sql语句将一个字段。按指定字符分成几个字段

比如,有表1 如下



a b 字段 c
1 fsdf-fefw-few-fegh d
2 fhtre-reh-eh-jeg fd
3 hjre-heg-wfbc d


将b字段 以 - 分成几个字段。






...全文
309 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
nianzhang747 2009-10-27
  • 打赏
  • 举报
回复
类似此操作应该在程序中处理

数据库之存储字符床即可
ACMAIN_CHM 2009-10-26
  • 打赏
  • 举报
回复
[Quote]还想问一下,这个 SUBSTRING_INDEX 处理的速度怎么样[/Quote]
尚可,毕竟比其它的方法快一些。

最快的应该还是在你自己的程序中进行处理。
daodaoyu222 2009-10-26
  • 打赏
  • 举报
回复
还想问一下,这个 SUBSTRING_INDEX 处理的速度怎么样


因为要处理的数据,可能有50万条。
平凡的思想者 2009-10-26
  • 打赏
  • 举报
回复
2楼的写法是正确的,不过填充的'-'字符数目只要跟位置匹配即可。

select a,
SUBSTRING_INDEX(concat(b,'-'),'-',1) as b1,
SUBSTRING_INDEX(SUBSTRING_INDEX(concat(b,'--'),'-',2),'-',-1) as b2,
SUBSTRING_INDEX(SUBSTRING_INDEX(concat(b,'---'),'-',3),'-',-1) as b3,
SUBSTRING_INDEX(SUBSTRING_INDEX(concat(b,'----'),'-',4),'-',-1) as b4,
c
from t_fengchujun;
ACMAIN_CHM 2009-10-26
  • 打赏
  • 举报
回复
mysql> select * from t_fengchujun;
+------+--------------------+------+
| a | b | c |
+------+--------------------+------+
| 1 | fsdf-fefw-few-fegh | d |
| 2 | fhtre-reh-eh-jeg | fd |
| 3 | hjre-heg-wfbc | d |
+------+--------------------+------+
3 rows in set (0.00 sec)

mysql> select a,
-> SUBSTRING_INDEX(concat(b,'----'),'-',1) as b1,
-> SUBSTRING_INDEX(SUBSTRING_INDEX(concat(b,'----'),'-',2),'-',-1) as b2,
-> SUBSTRING_INDEX(SUBSTRING_INDEX(concat(b,'----'),'-',3),'-',-1) as b3,
-> SUBSTRING_INDEX(SUBSTRING_INDEX(concat(b,'----'),'-',4),'-',-1) as b4,
-> c
-> from t_fengchujun;
+------+-------+------+------+------+------+
| a | b1 | b2 | b3 | b4 | c |
+------+-------+------+------+------+------+
| 1 | fsdf | fefw | few | fegh | d |
| 2 | fhtre | reh | eh | jeg | fd |
| 3 | hjre | heg | wfbc | | d |
+------+-------+------+------+------+------+
3 rows in set (0.00 sec)
ACMAIN_CHM 2009-10-26
  • 打赏
  • 举报
回复
select a,
SUBSTRING_INDEX(b,'-',1) as b1,
SUBSTRING_INDEX(SUBSTRING_INDEX(b,'-',2),'-',-1) as b2,
SUBSTRING_INDEX(SUBSTRING_INDEX(b,'-',3),'-',-1) as b3,
SUBSTRING_INDEX(SUBSTRING_INDEX(b,'-',8),'-',-1) as b4,
c
from 表1;

56,677

社区成员

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

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