Hi,
I need to make changes to the below to only extract '2002' as the result.
select REPLACE(REPLACE(SUBSTRING('CKnovelty2002_pouch-5AR-OneSize',1,CHARINDEX('-','CKnovelty2002_pouch-5AR-OneSize',1) - 1),'CKnovelty',''),'CKflower','')
At the moment, I am getting '2002_pouch' as the result which is incorrect. The expected output is '2002'.
Can somebody please help in this regard ?
Many thanks.
pwalter83:
select REPLACE(REPLACE(SUBSTRING('CKnovelty2002_pouch-5AR-OneSize',1,CHARINDEX('-','CKnovelty2002_pouch-5AR-OneSize',1) - 1),'CKnovelty',''),'CKflower','')
select REPLACE(REPLACE(SUBSTRING('CKnovelty2002_pouch-5AR-OneSize',1,CHARINDEX('_','CKnovelty2002_pouch-5AR-OneSize',1) - 1),'CKnovelty',''),'CKflower','')
Hi,
Many thanks for your kind response and it would work well in certain situations. However, there are values which have only '-'.
So I need to add the CHARINDEX for both '_' as well as for '-'. That is the problem I am facing.
Do you know how to add the CHARINDEX for '_' within the existing logic ?
Thanks.
can you please share some sample data
Yes sure, thanks-
CKnovelty190606-171-OneSize (Expected result - 190606)
CKnovelty2002_bag-5AR-OneSize (Expected result - 2002)
775816-171-OneSize (Expected result - 775816)
841108-6BD-OneSize (Expected result - 841108)
CKnovelty2002_card-5AR-OneSize (Expected result - 2002)
Many thanks.
Ifor
March 10, 2020, 12:19pm
6
-- *** Test Data ***
CREATE TABLE #t
(
TestString varchar(255) NOT NULL
);
INSERT INTO #t
VALUES ('CKnovelty190606-171-OneSize')
,('CKnovelty2002_bag-5AR-OneSize')
,('775816-171-OneSize')
,('841108-6BD-OneSize')
,('CKnovelty2002_card-5AR-OneSize');
-- *** End Test Data ***
SELECT TestString
,SUBSTRING(LEFT(TestString, PATINDEX('%[^0-9,A-Z]%', TestString) -1), PATINDEX('%[0-9]%', TestString), 255) AS Result
FROM #t;
Thanks for your very helpful reply. Do you know if PATINDEX can be used in SSIS expression ?