try it
I used the REVERSE, PATINDEX, SUBSTRINGto achieve it. Ignore CTE as I just want to use a temporary table.
;WITH CTE (Emp_Name, Schedule)
AS (
SELECT 'M.S.Cave', '10:00 AM - 7:00 PM Semi Flexi'
UNION ALL
SELECT 'M.S.Cave', '10:00 AM - 7:00 PM Semi Flexi'
UNION ALL
SELECT 'K.V.Boreta', '9:00 AM - 6:00 PM Fixed'
UNION ALL
SELECT 'K.V.Boreta', '9:00 AM - 6:00 PM Fixed'
UNION ALL
SELECT 'R.M.Mendoza', 'Branch 8:30 AM to 5:30 PM Sunday RD'
UNION ALL
SELECT 'R.M.Mendoza', 'Branch 8:30 AM to 5:30 PM Sunday RD'
)
, CTE2 AS (
SELECT *
, SUBSTRING(Schedule, PATINDEX('%[0-9]%', Schedule), LEN(Schedule)) SS
FROM CTE
)
SELECT *
,REVERSE(SUBSTRING(REVERSE(SS), PATINDEX('%[0-9]%', REVERSE(SS)) - 3, LEN(SS)))
FROM CTE2
And the result will be similar to
+-------------+-------------------------------------+-------------------------------+--------------------+
| Emp_Name | Schedule | SS | (No column name) |
+-------------+-------------------------------------+-------------------------------+--------------------+
| M.S.Cave | 10:00 AM - 7:00 PM Semi Flexi | 10:00 AM - 7:00 PM Semi Flexi | 10:00 AM - 7:00 PM |
| M.S.Cave | 10:00 AM - 7:00 PM Semi Flexi | 10:00 AM - 7:00 PM Semi Flexi | 10:00 AM - 7:00 PM |
| K.V.Boreta | 9:00 AM - 6:00 PM Fixed | 9:00 AM - 6:00 PM Fixed | 9:00 AM - 6:00 PM |
| K.V.Boreta | 9:00 AM - 6:00 PM Fixed | 9:00 AM - 6:00 PM Fixed | 9:00 AM - 6:00 PM |
| R.M.Mendoza | Branch 8:30 AM to 5:30 PM Sunday RD | 8:30 AM to 5:30 PM Sunday RD | 8:30 AM to 5:30 PM |
| R.M.Mendoza | Branch 8:30 AM to 5:30 PM Sunday RD | 8:30 AM to 5:30 PM Sunday RD | 8:30 AM to 5:30 PM |
+-------------+-------------------------------------+-------------------------------+--------------------+
source
share