这是我需要的表结构和输出,请提供一些建议。
| 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)作为输出。
答案 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;