dwain.c (3/5/2014)
This could be done in a possibly more general fashion using DelimitedSplit8K but if you've only got 1 or 2 hyphens, you can also do it like this:
WITH SampleData (OrderNo) AS
(
SELECT 'SO-123456' AS OrderNo
UNION ALL SELECT 'SO-123456-01'
UNION ALL SELECT 'SO-123456-2'
UNION ALL SELECT 'SO-123457'
UNION ALL SELECT 'SO-123457-1'
UNION ALL SELECT 'SO-123457-02'
UNION ALL SELECT 'SO-123458'
)
SELECT OrderNo, NewOrderNo
FROM SampleData a
CROSS APPLY
(
SELECT p1=CHARINDEX('-', OrderNo)
,s1=RIGHT(OrderNo, LEN(OrderNo)-CHARINDEX('-', OrderNo))
) b
CROSS APPLY
(
SELECT NewOrderNo=LEFT(OrderNo, p1+CHARINDEX('-', s1+'-')-1)
) c;
Edit: Note that this also works if there are more than two characters ahead of the first hyphen.
Nice!
Jason...AKA CirqueDeSQLeil
_______________________________________________
I have given a name to my pain...MCM SQL Server, MVP
SQL RNNR
Posting Performance Based Questions - Gail Shaw[/url]
Learn Extended Events