sql 把一个字段分成多个字段

[复制链接]
查看11 | 回复5 | 2020-5-14 11:35:27 | 显示全部楼层 |阅读模式
a
b
c
1
aaa-bbb-bbb
23
2
vvv-nnnn
24
3
qqq-www-wwww
12
变成如下形式:
a
b1
b2
b3
c
1
aaa
bbb
bbb
23
2
vvv
nnnn
24
3
qqq
www
wwww
12
我要mssql版本的别给我Mysql和Oracle的
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 |
就是这种效果如何达到,上边是mysql的希望能转换成mssql的

回复

使用道具 举报

千问 | 2020-5-14 11:35:27 | 显示全部楼层
方法和详细的操作步骤如下:1、第一步,新的PHP文件,见下图,转到下面的步骤。2、第二步,执行完上面的操作之后,需要声明数组变量,见下图,转到下面的步骤。3、第三步,执行完上面的操作之后,使用函数将阵列连接到带有连接字符的字符串,见下图,转到下面的步骤。4、第四步,执行完上面的操作之后,输出连接的字符串,见下图,转到下面的步骤。5、第五步,执行完上面的操作之后,预览的效果见下图,转到下面的步骤。6、第六步,执行完上面的操作之后,使用“implode”函数将数组拼接成字符串,6
回复

使用道具 举报

千问 | 2020-5-14 11:35:27 | 显示全部楼层
举例:原始SQL:SELECT PROVINCE_CODE,CITY_CODE,ZONE_CODEFROM CIV_P_CUST原始结果:拆分SQL:SELECT substring(PRO
回复

使用道具 举报

千问 | 2020-5-14 11:35:27 | 显示全部楼层
select a, dbo.split(b,'-',1) as b1, dbo.split(b,'-',2) as b2, dbo.split(b,'-',3) as b3, c fromt_fengchujun在执行上面的语句前,需要先创建一个字符串函数代码如下,在查询分析器执行create function dbo.split(@sr
回复

使用道具 举报

千问 | 2020-5-14 11:35:27 | 显示全部楼层
我的思路是:1、先判断b列中的最多的“-”,建表,同时将数据插入到新表;2、用charindex判断后,每列去更新。
回复

使用道具 举报

千问 | 2020-5-14 11:35:27 | 显示全部楼层
这个只用sql语句比较麻烦,由于不确定性存在,基本不可能完善解决,最好办法是结合程序来做
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行