各位大虾好
有这样一列:备注
来料不良SPB-AAC-CC
不良品VCL-TT-KK
有黑暗点,接触不好CCG-DD-TT-AA
现在想把这列“备注”中的文字和字母分别放到“原因”和“型号”,要怎么写啊,谢谢各位大虾
有这样一列:备注
来料不良SPB-AAC-CC
不良品VCL-TT-KK
有黑暗点,接触不好CCG-DD-TT-AA
现在想把这列“备注”中的文字和字母分别放到“原因”和“型号”,要怎么写啊,谢谢各位大虾
left(备注,patindex('%[A-Z]%',备注)-1) as 原因,
stuff(备注,1,patindex('%[A-Z]%',备注)-1,'') as 型号
from tb
set @str='SPB-AAC-CC'
select substring(@str,1,charindex('-',@str)-1) '原因',substring(@str,charindex('-',@str)+1,len(@str)-charindex('-',@str))'型号'原因 型号
---------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------
SPB AAC-CC(1 行受影响)
(
str1 nvarchar(50)
)
insert into #WW select 'SPB-AAC-CC'
insert into #WW select 'VCL-TT-KK'
insert into #WW select 'CCG-DD-TT-AA'select substring(str1,1,charindex('-',str1)-1) '原因',
substring(str1,charindex('-',str1)+1,len(str1)-charindex('-',str1))'型号'
from #WW原因 型号
-------------------------------------------------- --------------------------------------------------
SPB AAC-CC
VCL TT-KK
CCG DD-TT-AA(3 行受影响)
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([备注] varchar(29))
insert [tb]
select '来料不良SPB-AAC-CC' union all
select '不良品VCL-TT-KK' union all
select '有黑暗点,接触不好CCG-DD-TT-AA'
---查询---
select
left(备注,patindex('%[A-Z]%',备注)-1) as 原因,
stuff(备注,1,patindex('%[A-Z]%',备注)-1,'') as 型号
from tb---结果---
原因 型号
----------------------------- ------------------------------
来料不良 SPB-AAC-CC
不良品 VCL-TT-KK
有黑暗点,接触不好 CCG-DD-TT-AA(3 行受影响)
(
str1 nvarchar(50)
)
insert into #WW1 select '来料不良SPB-AAC-CC'
insert into #WW1 select '不良品VCL-TT-KK'
insert into #WW1 select '接触不好CCG-DD-TT-AA'select substring(str1,1,patindex('%[A-Z]%',str1)-1) '原因',
substring(str1,patindex('%[A-Z]%',str1)+1,len(str1)-patindex('%[A-Z]%',str1))'型号'
from #WW1原因 型号
-------------------------------------------------- --------------------------------------------------
来料不良 PB-AAC-CC
不良品 CL-TT-KK
接触不好 CG-DD-TT-AA(3 行受影响)
-- Author : htl258(Tony)
-- Date : 2010-03-27 09:27:53
-- Version:Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
-- Jul 9 2008 14:43:34
-- Copyright (c) 1988-2008 Microsoft Corporation
-- Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2)
--------------------------------------------------------------------------
--> 生成测试数据表:tbIF NOT OBJECT_ID('[tb]') IS NULL
DROP TABLE [tb]
GO
CREATE TABLE [tb]([备注] NVARCHAR(30),[原因] NVARCHAR(30),[型号] NVARCHAR(30))
INSERT [tb](备注)
SELECT N'来料不良SPB-AAC-CC' UNION ALL
SELECT N'不良品VCL-TT-KK' UNION ALL
SELECT N'有黑暗点,接触不好CCG-DD-TT-AA'
GO
--SELECT * FROM [tb]-->SQL查询如下:
update tb set 原因=LEFT(备注,patindex('%[a-zA-Z]%',备注)-1),型号=RIGHT(备注,len(备注)-patindex('%[a-zA-Z]%',备注)+1)select * from tb
/*
备注 原因 型号
------------------------------ ------------------------------ ------------------------------
来料不良SPB-AAC-CC 来料不良 SPB-AAC-CC
不良品VCL-TT-KK 不良品 VCL-TT-KK
有黑暗点,接触不好CCG-DD-TT-AA 有黑暗点,接触不好 CCG-DD-TT-AA(3 行受影响)
*/
(
str1 nvarchar(50)
)
insert into #WW select '来料不良SPB-AAC-CC'
insert into #WW select '不良品VCL-TT-KK'
insert into #WW select '有黑暗点,接触不好CCG-DD-TT-AA'
go
select
型号=right(str1,len(str1)-PATINDEX('%[a-z]%',str1)+1),
原因=LEFT(str1,PATINDEX('%[a-z]%',str1)-1)
from #WW
/*
型号 原因
-------------------------------------------------- --------------------------------------------------
SPB-AAC-CC 来料不良
VCL-TT-KK 不良品
CCG-DD-TT-AA 有黑暗点,接触不好*/
drop table #ww