SQL查询根据条件从字符串中获取char

时间:2015-10-06 12:06:06

标签: sql sql-server

我有一个我想修剪的字符串。我正在寻找的是从字符串到最后Y获取值的方法。

例如:

  1. AB Y bc Y dc Y1 - > AB Y bc Y dc Y
  2. ABYBCY - > ABYBCY
  3. ABY BCY DC - > ABY BCY
  4. 我正在尝试下面的查询,但我得不到我需要的东西。

    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 个答案:

答案 0 :(得分:3)

您可以使用stuff()reverse()执行此操作。

像这样的东西

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

注意:这假设给定字符串中至少有一个“Y”。

Here is a SQL Fiddle.

答案 1 :(得分:1)

您还可以尝试以下方式:

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

答案 2 :(得分:0)

只需使用CHARINDEX和SUBSTRING函数,我们就可以实现结果

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