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

2024-11-30 11:00:40
推荐回答(5个)
回答1:

方法和详细的操作步骤如下:

1、第一步,新的PHP文件,见下图,转到下面的步骤。

2、第二步,执行完上面的操作之后,需要声明数组变量,见下图,转到下面的步骤。

3、第三步,执行完上面的操作之后,使用函数将阵列连接到带有连接字符的字符串,见下图,转到下面的步骤。

4、第四步,执行完上面的操作之后,输出连接的字符串,见下图,转到下面的步骤。

5、第五步,执行完上面的操作之后,预览的效果见下图,转到下面的步骤。

6、第六步,执行完上面的操作之后,使用“implode”函数将数组拼接成字符串,使用“?”进行连接,见下图。这样,就解决了这个问题了。

回答2:

举例:

原始SQL:

SELECT 
PROVINCE_CODE,
CITY_CODE,
ZONE_CODE
FROM CIV_P_CUST

原始结果:

拆分SQL:

SELECT 
substring(PROVINCE_CODE,1,patindex('%〓%',PROVINCE_CODE)-1) as PID,
substring(PROVINCE_CODE,patindex('%〓%',PROVINCE_CODE)+1,len(PROVINCE_CODE)) as PNAME,
substring(CITY_CODE,1,patindex('%〓%',CITY_CODE)-1) as CID,
substring(CITY_CODE,patindex('%〓%',CITY_CODE)+1,len(CITY_CODE)) as CNAME,
substring(ZONE_CODE,1,patindex('%〓%',ZONE_CODE)-1) as ZID,
substring(ZONE_CODE,patindex('%〓%',ZONE_CODE)+1,len(ZONE_CODE)) as ZNAME
FROM CIV_P_CUST

拆分结果:

回答3:

select a, dbo.split(b,'-',1) as b1, dbo.split(b,'-',2) as b2, dbo.split(b,'-',3) as b3, c from t_fengchujun

在执行上面的语句前,需要先创建一个字符串函数代码如下,在查询分析器执行
create function dbo.split(
@srcstr varchar(4000),
@space varchar(50),
@showindex int
)returns varchar(4000)
begin
declare @pos1 int
declare @pos2 int
declare @index int
declare @return varchar(4000)
set @pos1 = 0
set @pos2 = 0
set @index = 0
set @srcstr = @srcstr + @space
while @index<@showindex
begin
set @pos1 = @pos2
set @pos2 = charindex(@space,@srcstr,@pos1+1)
if @pos2-@pos1-1>0
set @return = substring(@srcstr,@pos1+1,@pos2-@pos1-1)
else
begin
set @pos2 = len(@srcstr)
set @return = ''
end
set @index = @index + 1
end
return(@return)
end
go

回答4:

我的思路是:
1、先判断b列中的最多的“-”,建表,同时将数据插入到新表;
2、用charindex判断后,每列去更新。

回答5:

这个只用sql语句比较麻烦,由于不确定性存在,基本不可能完善解决,最好办法是结合程序来做