|
| Udlæse en given tekst i en værdi Fra : Burns |
Dato : 29-04-04 10:51 |
|
Jeg har en SQL2000 server med følgende felt-værdier:
1, "OK (2004-04-28 11:18:22)"
2, "Fail (2004-04-28 12:18:22)"
3, "Fail (2004-04-21 14:11:22)"
4, "OK (2004-03-22 14:12:22)"
5, "OK (2004-04-28 14:13:22)"
Jeg vil gerne have følgende output:
5, 2004-04-28 14:13:22, "OK"
2, 2004-04-28 12:18:22, "Fail"
1, 2004-04-28 11:18:22, "OK"
3, 2004-04-21 14:11:22, "Fail"
4, 2004-03-22 14:12:22, "OK"
Dvs. udlæsning af tdspunktet, sortering decending og udlæsning af status (OK
eller Fail). Kan man gøre det i en SQL select eller skal det behandles i
PHP?
| |
Peter Brodersen (29-04-2004)
| Kommentar Fra : Peter Brodersen |
Dato : 29-04-04 10:56 |
|
On Thu, 29 Apr 2004 11:50:32 +0200, "Burns" <invalid@nowhere.xyz>
wrote:
>Dvs. udlæsning af tdspunktet, sortering decending og udlæsning af status (OK
>eller Fail). Kan man gøre det i en SQL select eller skal det behandles i
>PHP?
Du kan nok bruge MID eller lignende (hvis jeg husker min MSSQL
korrekt) til at skære datoen ud, fx "2004-04-21 14:11:22". Fordelen
ved det datoformat er, at det kan sorteres uden videre.
I det hele taget bør du dog overveje at opdele det felt i to felter -
altså et status-felt og et tidspunkt-felt. Det giver en langt renere
datamodel.
--
- Peter Brodersen
Ugens sprogtip: "Der er et yndigt land" (og ikke "Det er et yndigt land")
| |
Burns (29-04-2004)
| Kommentar Fra : Burns |
Dato : 29-04-04 11:23 |
|
> >Dvs. udlæsning af tdspunktet, sortering decending og udlæsning af status
(OK
> >eller Fail). Kan man gøre det i en SQL select eller skal det behandles i
> >PHP?
>
> Du kan nok bruge MID eller lignende (hvis jeg husker min MSSQL
> korrekt) til at skære datoen ud, fx "2004-04-21 14:11:22". Fordelen
> ved det datoformat er, at det kan sorteres uden videre.
Det løser ikke helt mit problem, da der ikke er lige langt hen til det sted
hvor der skal kopieres fra (dvs. fra "(" og til ")" punktet). "OK" og "Fail"
fylder jo ikke det samme. Kan man evt. fange alt imellem paranteserne på een
eller anden måde? Tidspunktet står altid inden i paranteserne.
1, "OK (2004-04-28 11:18:22)"
2, "Fail (2004-04-28 12:18:22)"
3, "Fail (2004-04-21 14:11:22)"
4, "OK (2004-03-22 14:12:22)"
5, "OK (2004-04-28 14:13:22)"
> I det hele taget bør du dog overveje at opdele det felt i to felter -
> altså et status-felt og et tidspunkt-felt. Det giver en langt renere
> datamodel.
Det kan der være noget om, men der kan være mange andre typer i tabellen,
hvor man ikke har noget at bruge tidspunktet til (men det skal man lige på
disse to).
| |
Peter Brodersen (29-04-2004)
| Kommentar Fra : Peter Brodersen |
Dato : 29-04-04 11:30 |
|
On Thu, 29 Apr 2004 12:22:41 +0200, "Burns" <invalid@nowhere.xyz>
wrote:
>Det løser ikke helt mit problem, da der ikke er lige langt hen til det sted
>hvor der skal kopieres fra (dvs. fra "(" og til ")" punktet). "OK" og "Fail"
>fylder jo ikke det samme. Kan man evt. fange alt imellem paranteserne på een
>eller anden måde? Tidspunktet står altid inden i paranteserne.
Du kunne overveje at tælle fra højre så. Er der ikke en RIGHT-lignende
funktion? Det gør nok ikke det store, om slutparentesen kommer med i
dette tilfælde.
>> I det hele taget bør du dog overveje at opdele det felt i to felter -
>> altså et status-felt og et tidspunkt-felt. Det giver en langt renere
>> datamodel.
>Det kan der være noget om, men der kan være mange andre typer i tabellen,
>hvor man ikke har noget at bruge tidspunktet til (men det skal man lige på
>disse to).
Det gør jo ikke noget at feltet er blank/NULL i mange andre tilfælde.
Men problemet er stadigvæk, at du forsøger at lægge to informationer
ind i ét felt.
--
- Peter Brodersen
Ugens sprogtip: "Der er et yndigt land" (og ikke "Det er et yndigt land")
| |
Burns (29-04-2004)
| Kommentar Fra : Burns |
Dato : 29-04-04 11:32 |
|
> Det løser ikke helt mit problem, da der ikke er lige langt hen til det
sted
> hvor der skal kopieres fra (dvs. fra "(" og til ")" punktet). "OK" og
"Fail"
> fylder jo ikke det samme. Kan man evt. fange alt imellem paranteserne på
een
> eller anden måde? Tidspunktet står altid inden i paranteserne.
>
> 1, "OK (2004-04-28 11:18:22)"
> 2, "Fail (2004-04-28 12:18:22)"
> 3, "Fail (2004-04-21 14:11:22)"
> 4, "OK (2004-03-22 14:12:22)"
> 5, "OK (2004-04-28 14:13:22)"
Fandt selv ud af det:
SUBSTRING(Value, CHARINDEX('(', Value) + 1, 19) AS ValueTime
| |
|
|