SQL选择在两个空格之间获取字符串

mar*_*rky 2 t-sql sql-server substring

我的字段名称为DOE JOHN HOWARD或DOE JOHN H.

我需要一个查询来获取两个空格之间的字符串(在本例中为JOHN).

这里的答案显示了当所需的子字符串位于两个不同的字符串之间时如何执行此操作,但是当所需的子字符串位于同一字符串的两个实例(在本例中为空格)之间时,我看不到如何应用类似的东西.

我怎样才能做到这一点?

Sco*_*ard 7

使用PARSENAME可以做一些有点偷偷摸摸的方法.

它的目的是获取对象/命名空间的特定部分,但是,在这种情况下,您可以通过首先用句点替换字符串来使用它.

例如,

SELECT PARSENAME(REPLACE('DOE JOHN HOWARD',' ','.'),2)
Run Code Online (Sandbox Code Playgroud)


Ale*_* K. 6

单程:

select 
left(substring(fld, 
    charindex(' ', fld) + 1, len(fld)), 
    charindex(' ', substring(fld, charindex(' ', fld) + 2, len(fld)))) 
Run Code Online (Sandbox Code Playgroud)