如何在特定字符后输出字符串?

时间:2014-08-15 00:42:17

标签: sql

我有一个问题:

  select 
        right( ltrim(rtrim(MEMBER_NAME)),(len(ltrim(rtrim(MEMBER_NAME)))- charindex('/',ltrim(rtrim(MEMBER_NAME))))) as member_name

    from member

在member_name上我想在'/'之后输出姓氏和名字的第一个字母。

我遇到的问题是上面的查询,输出一些错误的名称取决于它们是否有更长的名称。

例如,如果我们有一个名字'suarez-suarez / john doe'正在输出'john doe',那应该是suarez-suarez J' 或者'suarez / john doedoe'输出'john doedoe'时它应该是'suarez j'。

如何让它输出带姓氏和名字首字母的字符串?

我创建了http://sqlfiddle.com/#!6/c7a74/1

 create table member (member_name varchar(50));
    insert into member (member_name)
    values ('suarez-suarez/john doe'),
    ('suarez/john doedoe'),
    ('suarez/john d'),
    ('mejia/suzy m'),
    ('orozco/dady rammmon');

1 个答案:

答案 0 :(得分:1)

我也有点困惑,但考虑到你列出的名字,如果你想要姓氏+空格+第一名,那么这就可以了。

SELECT LEFT('suarez/john doe', charindex('/', 'suarez/john doe') - 1) + ' ' + SUBSTRING('suarez/john doe', charindex('/', 'suarez/john doe') + 1, 1)