Я просто смущаюсь с этим. У меня есть журнал данных, который сохраняется в базе данных, как-то вроде этого:Сплит и сортировка массива по дате, получение пустых массивов
Log-Date: 10/26/2012. Record created. Admission Date: 08/01/2012
Log-Date: 06/20/2013 Discharged. Discharge Date:10/15/2012
Reason for Discharge:01 - (routine discharge).
<!--- all other tracking info --->
Я пытаюсь вытащить из этого журнала только разряды и сортировки/фильтрации их по дате. Этот журнал сохраняется в базе данных как один столбец varchar (MAX). Мне нужно отсортировать эти данные и только потянуть даты выпуска/причину с помощью регулярного выражения, а затем применить фильтр. Конечный продукт должен закончиться тем, что я помещаю этот массив в таблицу с PATIENT | DISCHARGE DATE | DISCHARGE REASON
. Мой код прямо сейчас дает мне некоторые ошибки, так как он оставляет меня с пустыми значениями массива. Мой вопрос в том, что мне нужно удалить эти пустые значения и отсортировать их по дате, но я не уверен, с чего начать.
<cfquery name="getDischarge" datasource="#this.dsn#">
select PatientsName, LogData from Patient
</cfquery>
<cfoutput query="getDischarge" group="PatientsName">
<cfif LogData neq "">
<cfsavecontent variable="str">
#LogData#
</cfsavecontent>
<cfset possibilities = reMatch("Discharge Date?:(\d\d?/\d\d?/\d{4})\s*Reason for Discharge:\d* - ((?:(?!Log-Date:).)*)", str)>
<cfset dateArray = ArrayNew(2)>
<cfloop index="w"
array="#possibilities#">
<cfif w NEQ "">
<!--- create 1 dimensional temp array to hold DATE | REASON --->
<cfset tempArray = ArrayNew(1)>
<!--- trim our regex to have only the date & then DateFormat --->
<cfset theDate = #Mid(w, 16, 11)#>
<cfset formatDate = #dateformat('#thedate#','mm-dd-yyyy')#>
<!--- use our regex to find the reason for discharge --->
<cfset theReason = reMatch("Reason for Discharge:\d* - ((?:(?!Log-Date:).)*)", str)>
<!--- append our DATE | REASON to 1d temp array --->
<cfset ArrayAppend(tempArray, '#formatDate#')>
<cfset ArrayAppend(tempArray, '#theReason#')>
<!--- append our 1d array to our 2d array to output matching DATE | REASON --->
<cfset #ArrayAppend(dateArray, '#tempArray#')#>
</cfif>
</cfloop>
<cfdump var="#dateArray#">
</cfif> <!--- logdata neq "" --->
</cfoutput>
Для меня, по логике вещей, это должно работать и опускать пустые значения, но это то, что я получаю, когда я сбросить эти данные:
Имеются ли данные из верхней части вашей записи одной записи? Кроме того, каков ваш механизм базы данных. –
Да, к сожалению, журнал сохраняется как одна запись. Я использую SQL Server – bWF800
Тогда вы сможете решить его с помощью sql. Предложение 'where' может фильтровать только у выписанных пациентов. Функции 'patindex' и' mid' могут помочь вам получить ваши данные в предложении 'select'. Это то, как я буду заниматься этим. –