且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

SQL Server 2008中的oracle instr等效项

更新时间:2023-02-05 10:38:28

PATINDEX [ ^ ]应该是您要查找的T-SQL字符串函数!

***的问候,

-MRB
PATINDEX[^] should be the T-SQL string function you''re looking for!

Best Regards,

-MRB


伙计们,这是我到目前为止所拥有的,对于我的需求,它可以正常工作:
Well guys heres what i have so far, for my needs it works:
SELECT 
   left(substring(''JOHN SCOTT JUNIOR'',1,CHARINDEX('' '',''JOHN SCOTT JUNIOR'',1)),15) [first name],
   substring(''JOHN SCOTT JUNIOR'',CHARINDEX('' '',''JOHN SCOTT JUNIOR'',1)+1,15) [first name]


结果


RESULTS

FIRST_NAME    LAST_NAME
JOHN          SCOTT JUNIOR


仍在使用中间名称,如果有人想继续使用它会留在这里...它可以工作,但在某些奇怪的情况下,它不会显示中间名称...


Still working on the middle one, gonna leave it here if someone wants to take it and continue... it works but for some weird cases it doesn''t display middle names...

substring(''JOHN SCOTT JUNIOR'',CHARINDEX('' '',''JOHN SCOTT JUNIOR'',CHARINDEX('' '',''JOHN SCOTT JUNIOR'')),LEN(''JOHN SCOTT JUNIOR'')+15-CHARINDEX('' '',''JOHN SCOTT JUNIOR'',CHARINDEX('' '',''JOHN SCOTT JUNIOR''))-CHARINDEX('' '',REVERSE(''JOHN SCOTT JUNIOR''),1)+1) [Last name],
REVERSE(substring(REVERSE( LEFT(''JOHN SCOTT JUNIOR'',LEN(''JOHN SCOTT JUNIOR'')+1-CHARINDEX('' '',REVERSE(''JOHN SCOTT JUNIOR''),1))),1,CHARINDEX('' '',REVERSE( LEFT(''JOHN SCOTT JUNIOR'',LEN(''JOHN SCOTT JUNIOR'')+1-CHARINDEX('' '',REVERSE(''JOHN SCOTT JUNIOR''),1))),1)-1))    [last name],
REVERSE(substring(REVERSE(''JOHN SCOTT JUNIOR''),1,CHARINDEX('' '',REVERSE(''JOHN SCOTT JUNIOR''),1)-1))  [second last name],