SQL,如何获得这些结果?

时间:2018-09-19 22:37:12

标签: sql sql-like

这是我需要的表结构和输出,请提供一些建议。

| requestid | requeststatus |         note             | lasted updated date |
|     2123  |     open      | copy from requestid 1234 | 2018/8/19           |
|     2124  |    follow up  | copy from requestid 3456 | 2018/8/20           |

如何编写函数以获取注释中的requestid的结果。 例如,我需要获取1234(这是从那里复制用户信息的请求ID)作为输出。

4 个答案:

答案 0 :(得分:0)

如果我理解正确,则可以尝试使用exists和子查询like

SELECT * 
FROM T t1
WHERE exists (
     SELECT 1 
     FROM T tt
     WHERE tt.note like '%' + t1.requestid  + '%'
)

答案 1 :(得分:0)

请求是否总是最后四个字符?

如果是这样,它将适用于大多数数据库:

select t.*, right(note, 4)
from t;

答案 2 :(得分:0)

with cte as (
select distinct  requestid, reverse(LEFT(REVERSE(Note),CHARINDEX(' ',REVERSE(Note)))) as Cloneformid ,note,CreatedDate,ROW_NUMBER()  OVER(PARTITION BY RequestID ORDER by CreatedDate desc) as rn 
from table 
where   Note like 'cloned from request Id %' 
)
select RequestID, cast(Cloneformid  as int) as Cloneformid
from cte
where   rn =1 and  isnumeric(Cloneformid) = 1 

答案 3 :(得分:0)

如果您使用的是Oracle,请使用:

select substr(note, -4) from table where 1;

如果您使用的是MS SQL,

select right(note, 4) from table where 1;

如果您使用的是MySQL,

select substr(note, char_length(note) - 3, 4) from table where 1;