值得一提的是,如果這是數據,您需要經常檢索您可以創建一個計算一列你的表,甚至索引它,如果你想。請注意我的代碼和評論。
IF OBJECT_ID('tempdb..#t') is not null drop table #t;
CREATE TABLE #t
(
-- the original column
x varchar(256),
-- A computed column to extract that data ahead of time
xx as
case
when PATINDEX('%[a-zA-Z][a-zA-Z][0-9][0-9][0-9][0-9][0-9][a-zA-Z]%',x) > 0
then substring(x,PATINDEX('%[a-zA-Z][a-zA-Z][0-9][0-9][0-9][0-9][0-9][a-zA-Z]%',x),8)
end persisted
);
-- optional index if you search on that column frequently
-- NOTE That you indexes can speed up SELECT statements but will impact inserts/updates/deletes
CREATE NONCLUSTERED INDEX nc_t_xx ON #t(xx);
--declare @t table (x varchar(256))
insert into #t (x) values
('N #AN54055Z/MATTHEW'),
('345 IN EH86963D JP Verified o'),
('C N # CV08705Z PP CONF/A'),
('UI 45 Ty'),
('1548 47 CN #DW40205J VERIFIED AF'),
('N #-CT77535S'),
('78 78Thi OK'),
('584 C yu N #AV10045A/DONNA MO'),
('AH28395U VERIF BK MAH'),
('yu YUyu789 56')
SELECT x, xx
FROM #t;
幹得好。請注意,您不需要在CASE語句中包含ELSE NULL; ELSE NULL是默認行爲。 –
是的,這只是習慣,是明確的,易於閱讀@AlanBurstein – scsimon