Sql, как получить эти результаты? - PullRequest
0 голосов
/ 20 сентября 2018

Вот структура таблицы и вывод, в котором я нуждаюсь, пожалуйста, предоставьте некоторые предложения.

| 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           |

как написать функцию для получения результата requesttid, который находится в примечании.например, мне нужно получить 1234 (который является идентификатором запроса от пользователя там скопировать информацию) в качестве вывода.

Ответы [ 4 ]

0 голосов
/ 21 сентября 2018

Если вы используете 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;
0 голосов
/ 20 сентября 2018

Всегда ли в запросе последние четыре символа?

Если это так, это будет работать в большинстве баз данных:

select t.*, right(note, 4)
from t;
0 голосов
/ 20 сентября 2018
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 
0 голосов
/ 20 сентября 2018

Если я правильно понимаю, вы можете попробовать использовать exists и подзапрос like

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