Я пытаюсь извлечь дату min из строки varchar
.Извлечь Min Date из строки с несколькими датами с использованием SQL Server
Данные в поле выглядит следующим образом
QTY DIFFERENCE - PO LINE 6. 147 ON PO/192 ON INVOICE
5/18/2016 4:18:52 PM by ROOFING\ebuchanan
ANDREW SANTORI ISSUED THIS PO, PLEASE SEND TO HIS QUE
5/21/2016 9:48:42 AM by ROOFING\knaylor
RE-ROUTED TO ATS
Используя этот код
SELECT
UISeq,
LEFT(SUBSTRING(Notes, PATINDEX('%[0-9/]%', Notes), 8000),
PATINDEX('%[^0-9/]%', SUBSTRING(Notes, PATINDEX('%[0-9/]%', Notes), 8000) + 'X') -1) as 'MaxDate'
FROM
bAPUI
WHERE
Notes IS NOT NULL
ORDER BY
UISeq
Я получаю этот результат из записи выше
6
Я также получаю
01/01/2000
В других полях
Как исправить код, чтобы возвращать только минимальную дату в каждом поле записи?
UISeq MinDate
2 3
3 5
13 4/1/2016
15 1
17
18 4/15/2016
19 3
20 4/15/2016
40 05/22/16
43 05/22/16
54 5/18/16
пост Джона вне моей текущей способности
Я создал функцию, вот код для извлечения данных
Declare @Str varchar(max);
Select @Str as Notes, Min(Key_Value)
from bAPUI, [dbo].[SA-udf-Str-Parse](replace(@Str,char(13),' '),' ')
Where Key_Value like '%/%'
and len(Key_Value)>=10
То, что я не понимая в том, как получить bAPUI .Написать таблицу/поле в оператор select.
Удачи. Этот тип разбора на данные, которые, как представляется, являются свободным текстом, невозможно. Здесь нет ничего конкретного, чтобы вы могли определить, где начинается дата или где она заканчивается.Вероятно, вы могли бы выделить даты, но было бы сложно продлить это, чтобы включить временную часть. –
Является ли образец вы отправили содержимое одной строки? Или это несколько строк? Предоставление некоторого понимания вашей таблицы даст вам много хорошего здесь. –
Шон: Я не беспокоюсь о времени, просто о дате. Спасибо – Steve