Вот структура таблицы и вывод, в котором я нуждаюсь, пожалуйста, предоставьте некоторые предложения.
| 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 (который является идентификатором запроса от пользователя там скопировать информацию) в качестве вывода.
Если вы используете 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;
Всегда ли в запросе последние четыре символа?
Если это так, это будет работать в большинстве баз данных:
select t.*, right(note, 4) from t;
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
Если я правильно понимаю, вы можете попробовать использовать exists и подзапрос like
exists
like
SELECT * FROM T t1 WHERE exists ( SELECT 1 FROM T tt WHERE tt.note like '%' + t1.requestid + '%' )