/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
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



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste