2015-10-06 86 views
1

我有一個我想修剪的字符串。我正在尋找的是從字符串中獲得價值的方法,直到最後的Y根據條件從字符串中獲取char的SQL查詢

例:

  1. AB Y bc Y dc Y1 - >AB Y bc Y dc Y
  2. ABYBCY - >ABYBCY
  3. ABY BCY DC - >ABY BCY

我想下面的查詢,但我AMN沒有得到我所需要的。

DECLARE @name varchar(200)='RAM, Y SHAM Y AB' 
SELECT @name 
     ,right(@name, CHARINDEX('Y', @name) - 1) AS [Surname] 
     ,REPLACE(SUBSTRING(@name, CHARINDEX(',', @name), LEN(@name)), ',', '') AS [FirstName] 

回答

3

您可以stuff()reverse()做到這一點。

像這樣的事情

SELECT STUFF(
      @name, 
      LEN(@name) - CHARINDEX('Y', REVERSE(@name)), 
      LEN(@name), 
      '' 
     ) string 

注:這是假設至少有一個「Y」給定的字符串中。

Here is a SQL Fiddle.

+0

變量名是錯誤的 - @name - 請代碼更改 – pedram

+0

是代碼工作,除了兩個條件..最後'Y'我必須手動添加2.如果沒有'Y' – Mahajan344

+0

Tha nks你的幫助 – Mahajan344

1

您也可以嘗試這樣的:

Select substring(@name,1, len(@name) - (charindex('Y', reverse(@name)))+1) 
+0

你甚至可以使用LEFT來縮短它的襯底 –

0

只需使用CHARINDEX和字符串函數我們可以實現的結果

declare @t table (Val varchar(30)) 
insert into @t (Val) values 
('AB Y bc Y dc Y1'), 
('ABYCY1'), 
('ABY BCY DC') 

select REVERSE(SUBSTRING(REVERSE(Val),CHARINDEX('Y',REVERSE(Val)),LEN(Val))) 
from @t