2013-06-14 3 views
1

Вопрос для всех ... У меня есть некоторые значения, которые я вставил в таблицу, когда я пытаюсь играть со строковыми функциями. То, что я пытаюсь сделать, это удалить конец строки и сохранить все документы:Получить подстроку, усеченную в SQL Server

CREATE TABLE #BrokerNameT 
    (
    BrokerName VARCHAR(100) 
) 

INSERT INTO #BrokerNameT 
      (BrokerName) 
VALUES  ('Peter Pan Co Cash'), 
      ('Batman Co Cash'), 
      ('Spiderman Algo'), 
      ('Spiderman Cash') 

Вот что я ищу, чтобы просто вернуться: «Питер Пэн Co», «Бэтмен Co», и 'Spiderman'

Можно ли найти первое пространство от конец строки? Если бы я смог это сделать, не мог бы я просто сохранить все до первого места?

Любая идея, как я буду заниматься этим?

Могу ли я использовать два оборота для достижения этого?

ответ

4

Обрати строку, затем найдите позицию первого пространства, тогда вы знаете, как далеко отстоит конец последнего пространства.

SELECT 
    SUBSTRING(
    BrokerName, 
    1, 
    LEN(BrokerName) - CHARINDEX(' ', REVERSE(BrokerName)) 
) 
FROM 
    #BrokerNameT 
+0

Yup. Чувствуешь себя глупым, потому что не думаешь об этом. –

+0

Не так ли глупо, что SQL Server не продвинулся вперед, чтобы сделать что-то столь же простое, как это и регулярное выражение, например? – shahkalpesh

0

Вот запрос, чтобы сделать это:

select *, 
     left(BrokerName, len(BrokerName) - charindex(' ', reverse(BrokerName)) 
      ) as AllButLast 
from BrokerNameT 

Here является SQLFiddle, чтобы продемонстрировать это.

Смежные вопросы