Avatar billede net-base.dk Nybegynder
02. juli 2004 - 09:22 Der er 15 kommentarer og
1 løsning

Meget landt udtræk, kan det kortes ned?

Hej.

"SELECT PageId, Header, SectionID, TextBody FROM Pages where pageid = 'Profile' ORDER BY PageID"

jeg laver dette udtræk fra min database, men feltet TextBody, kan godt være på over 1000tegn, og vil derfor høre om det er muligt at lave det på den måde at man kun henter 100tegn?
Avatar billede the_party_dog Nybegynder
02. juli 2004 - 09:24 #1
"SELECT PageId, Header, SectionID, LEFT(TextBody,100) FROM Pages where pageid = 'Profile' ORDER BY PageID"
Avatar billede the_party_dog Nybegynder
02. juli 2004 - 09:24 #2
Sådan skal det se ud, så henter du 100 tegn fra venstre side i din kolonne.
Avatar billede net-base.dk Nybegynder
02. juli 2004 - 09:27 #3
okay den vil jeg lige prøve.
Avatar billede net-base.dk Nybegynder
02. juli 2004 - 09:33 #4
Jeg får denne fejl når jeg prøver sql sætningen af i min SQL Query Analyzer

Argument data type text is invalid for argument 1 of left function.
Avatar billede the_party_dog Nybegynder
02. juli 2004 - 09:40 #5
"SELECT PageId, Header, SectionID, LEFT(TextBody,100) AS TextBody FROM Pages where pageid = 'Profile' ORDER BY PageID"
Avatar billede the_party_dog Nybegynder
02. juli 2004 - 09:40 #6
Ups, det er min fejl. Du skal også give den et navn når du har ændret på hvad du trækker ud af din kolonne, derfor skal du lige smide "AS TextBody" ind...
Avatar billede net-base.dk Nybegynder
02. juli 2004 - 09:45 #7
får stadig samme fejl,
Avatar billede net-base.dk Nybegynder
02. juli 2004 - 09:47 #8
Får denne fejl:

Server: Msg 8116, Level 16, State 2, Line 2
Argument data type text is invalid for argument 1 of left function.
Avatar billede the_party_dog Nybegynder
02. juli 2004 - 09:48 #9
Hvad type er din TextBody kolonne? nvarchar?
Avatar billede arne_v Ekspert
02. juli 2004 - 09:48 #10
Man kan ikke bruge LEFT på et TEXT felt.

Hvis du er sikker på at der er mindre end 8000 tegn kan du bruge:

LEFT(CAST(TextBody AS VARCHAR(8000)), 100)
Avatar billede arne_v Ekspert
02. juli 2004 - 09:49 #11
hvis NTEXT så 4000 og NVARCHAR(4000)
Avatar billede net-base.dk Nybegynder
02. juli 2004 - 09:53 #12
det virker, men hvad så hvis feltet er over 8000tegn?
Avatar billede arne_v Ekspert
02. juli 2004 - 09:59 #13
Problem !

De fleste database API'er har specielle funktioner til at læse CLOB's/BLOB's
med som understøtter at læser små bidder af gangen. Men det kræver pæne
ændringer på applikations niveau.

En anden mulighed er at gemme de første 100 tegn i nyt felt StartTextBody, som
du så bare skal opdatere hver gang du opdaterer TextBody.

En tredie mulighed er at læse det hele, men kun vise de første 100 tegn.
Avatar billede net-base.dk Nybegynder
02. juli 2004 - 10:06 #14
så er jeg tilhænger af den sidste, dette skal bruges til nogle shops, hvor det er meget forskelligt hvormeget de forskellige shops har stående på siden, så for ik at løbe ind i en fejl, ligge det sidste funktion med at hente det hele og kun side 100tegn være den bedste
Avatar billede arne_v Ekspert
02. juli 2004 - 18:30 #15
OK at jeg ligger et svar ?
Avatar billede arne_v Ekspert
14. juli 2004 - 22:32 #16
Tid at få afsluttet spørgsmålet ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester