SQL Server 2008中的oracle instr等效项 [英] oracle instr equivalent in sql server 2008

查看:84
本文介绍了SQL Server 2008中的oracle instr等效项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

另一个适合你们,我在oracle上有这个功能:

Another one for you guys, i have this on oracle:

SELECT SUBSTR(''JOHN SCOTT JUNIOR'',1,instr(''JOHN SCOTT JUNIOR'','' '',1,1) )
FROM dual;
SELECT SUBSTR(''JOHN SCOTT JUNIOR'',instr(''JOHN SCOTT JUNIOR'','' '',-1,2)+1,instr(''JOHN SCOTT JUNIOR'','' '',-1,1)-instr(''JOHN SCOTT JUNIOR'','' '',-1,2) )
FROM dual;
SELECT SUBSTR(''JOHN SCOTT JUNIOR'',INSTR(''JOHN SCOTT JUNIOR'','' '',-1,1)+1 )
FROM dual;



结果



RESULTS

SUBSTR(''JOHNSCOTTJUNIOR'',1,INSTR(''JOHNSCOTTJUNIOR'','''',1,1)) 
----------------------------------------------------------- 
JOHN 
                                                       
SUBSTR(''JOHNSCOTTJUNIOR'',INSTR(''JOHNSCOTTJUNIOR'','''',-1,2)+1,INSTR(''JOHNSCOTTJUNIOR'','''',-1,1)-INSTR(''JOHNSCOTTJUNIOR'','''',-1,2)) 
------------------------------------------------------------------------------------------------------------------------------ 
SCOTT
                                                                                                                          
SUBSTR(''JOHNSCOTTJUNIOR'',INSTR(''JOHNSCOTTJUNIOR'','''',-1,1)+1) 
------------------------------------------------------------ 
JUNIOR


我需要在SQL SERVER上做这件事吗?有人可以向我指出正确的方向吗?


I need to do this exact thing on SQL SERVER can anyone point me in the right direction?

推荐答案

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],


这篇关于SQL Server 2008中的oracle instr等效项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆