这是我尝试使用 patindex 的东西,看看是否有帮助
SELECT FILENAME
,fullname
,LastName
,FirstName
,MiddleName
,ISNULL(LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)-1),'')
+' '
+ISNULL(LEFT(LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)),'')),PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)),'')))-1),'')
+' '
+ISNULL(IIF(PATINDEX('%[, _]%',LEFT(LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)+PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)),'')))),'')),PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)+PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)),'')))),'')))))>1
,IIF(PATINDEX('%[a-z]%',LEFT(LEFT(LEFT(LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)+PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)),'')))),'')),PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)+PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)),'')))),'')))),PATINDEX('%[, _]%',LEFT(LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)+PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)),'')))),'')),PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)+PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)),'')))),'')))))),1))=1,
LEFT(LEFT(LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)+PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)),'')))),'')),PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)+PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)),'')))),'')))),PATINDEX('%[, _]%',LEFT(LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)+PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)),'')))),'')),PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)+PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)),'')))),'')))))-1)
,NULL)
,NULL),'') FULLNAME
,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)-1) LASTNAME
,LEFT(LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)),'')),PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)),'')))-1) FIRSTNAME
,IIF(PATINDEX('%[, _]%',LEFT(LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)+PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)),'')))),'')),PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)+PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)),'')))),'')))))>1
,IIF(PATINDEX('%[a-z]%',LEFT(LEFT(LEFT(LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)+PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)),'')))),'')),PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)+PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)),'')))),'')))),PATINDEX('%[, _]%',LEFT(LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)+PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)),'')))),'')),PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)+PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)),'')))),'')))))),1))=1,
LEFT(LEFT(LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)+PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)),'')))),'')),PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)+PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)),'')))),'')))),PATINDEX('%[, _]%',LEFT(LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)+PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)),'')))),'')),PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)+PATINDEX('%[, _]%',LTRIM(REPLACE(FILENAME,LEFT(FILENAME,PATINDEX('%[, _]%',FILENAME)),'')))),'')))))-1)
,NULL)
,NULL) MIDDLENAME
FROM #dob