--如果帮你写成这样,下面插入你自己写吧
create table cheliang
(厂牌型号 nvarchar(1000),
车号 nvarchar(1000))insert into cheliang
select '星王ZA6600C', '粤HU0532' union all
select '扬子YZL6603B', '粤HU0598' union all
select '桂林GL6600C1', '粤HU0092' union all
select '武陵源WLY6600', '粤HU0077'
select 厂牌型号 AS 厂牌,
substring(厂牌型号,patindex('%[A-Z,0-9,A-Z]%',厂牌型号),len(厂牌型号)) as 型号,
车号
from cheliang----------------------------------------------
星王ZA6600C ZA6600C 粤HU0532
扬子YZL6603B YZL6603B 粤HU0598
桂林GL6600C1 GL6600C1 粤HU0092
武陵源WLY6600 WLY6600 粤HU0077
create table cheliang
(厂牌型号 nvarchar(1000),
车号 nvarchar(1000))insert into cheliang
select '星王ZA6600C', '粤HU0532' union all
select '扬子YZL6603B', '粤HU0598' union all
select '桂林GL6600C1', '粤HU0092' union all
select '武陵源WLY6600', '粤HU0077'
select 厂牌型号 AS 厂牌,
substring(厂牌型号,patindex('%[A-Z,0-9,A-Z]%',厂牌型号),len(厂牌型号)) as 型号,
车号
from cheliang----------------------------------------------
星王ZA6600C ZA6600C 粤HU0532
扬子YZL6603B YZL6603B 粤HU0598
桂林GL6600C1 GL6600C1 粤HU0092
武陵源WLY6600 WLY6600 粤HU0077
select replace(厂牌型号,
substring(厂牌型号,patindex('%[A-Z,0-9,A-Z]%',厂牌型号),len(厂牌型号)),'') AS 厂牌,
substring(厂牌型号,patindex('%[A-Z,0-9,A-Z]%',厂牌型号),len(厂牌型号)) as 型号,
车号
from cheliang---------------------
星王 ZA6600C 粤HU0532
扬子 YZL6603B 粤HU0598
桂林 GL6600C1 粤HU0092
武陵源 WLY6600 粤HU0077
但还有一点问题,原表有些行只是有型号例如“星王”,但是后面是没有跟型号的。如果照你这种方法做的话,这种特殊情况的结果就是“星王”这个真正的厂牌在新表中被拆分开了。
如下:
厂牌 型号
王 星
select
case when patindex('%[A-Z,0-9,A-Z]%',厂牌型号)>0 then
replace(厂牌型号,substring(厂牌型号,patindex('%[A-Z,0-9,A-Z]%',厂牌型号),len(厂牌型号)),'')
else 厂牌型号 end
AS 厂牌,
case when patindex('%[A-Z,0-9,A-Z]%',厂牌型号)>0 then
substring(厂牌型号,patindex('%[A-Z,0-9,A-Z]%',厂牌型号),len(厂牌型号))
else '' end
as 型号,
车号
from cheliang