Avatar billede lklingenberg Nybegynder
23. august 2002 - 22:01 Der er 9 kommentarer og
1 løsning

Afkorte tekststreng i output

Hi,

Jeg anvender nedenstående SELECT sætning til at hente data fra en db. Som det se afkortes kolonnen 'side'  til 40 karakterer og tilføjes '...'. Det virker fint nok, men jeg er lidt irriteret over at '...' også tilføjes tekststrenge mindre end 40 karakterer. Kan det inkluderes på en måde i SELECT sætningen?

Jeg er klar over at jeg i output'et kan gøre dette, men pointen var kun et hente de mest nødvendige data ud af db'en og ikke hente det hele for derefter at smidde en del væk igen.

SELECT (Convert(varchar(40),side) + '...') AS sidecut, UI, akronym, url FROM Links;"
Avatar billede bongobride Nybegynder
23. august 2002 - 22:03 #1
lytter lige med...
Avatar billede Slettet bruger
23. august 2002 - 22:12 #2
SELECT (IF((LENGTH(beskrivelse)<40),beskrivelse,CONCAT(LEFT(beskrivelse,40),'...'))

Dette klipper ved 40 hvis teksten er over 40, og gør intet hvis den er under.

At den så måske klipper et ord midtover må du leve med ;)
Avatar billede bongobride Nybegynder
23. august 2002 - 22:14 #3
kan man ikke lave alla sådan noget her?
>< kan ikke lige huske hvad forskellen er....

<?
if $row[bla] > 40{ // Større end 40
SELECT (Convert(varchar(40),side) + '...') AS sidecut, UI, akronym, url FROM Links;"
echo "$row['bla'];}

if $row[bla] < 40{ // Mindre end 40
SELECT sidecut, UI, akronym, url FROM Links;"
echo "$row['blabla']}?>
Avatar billede lklingenberg Nybegynder
23. august 2002 - 22:24 #4
Sætningen
SELECT (IF((LENGTH(side)<40),side,CONCAT(LEFT(side,40),'...'))
giver desværre en fejl (Incorrect syntax near the keyword 'IF')...
Avatar billede Slettet bruger
23. august 2002 - 23:02 #5
Der er vist også en ( for meget...

SELECT IF((LENGTH(beskrivelse)<40),beskrivelse,CONCAT(LEFT(beskrivelse,40),'...'))
Avatar billede lklingenberg Nybegynder
23. august 2002 - 23:15 #6
Sorry, den går eller ikke - samme fejl. Er LENGHT og CONCAT standard SQL?
Avatar billede Slettet bruger
23. august 2002 - 23:17 #7
Njae...det virker da i MySQL, men er ikke sikker på om det er helt normalt *G*
Avatar billede tmceu Praktikant
24. august 2002 - 13:23 #8
LENGTH og CONCAT funktionen findes ikke i T-SQL (det er i stedet LEN og +). Det er nok nærmere noget med dette:

SELECT Beskrivelse = CASE WHEN LEN(Beskrivelse) <= 40 THEN Beskrivelse ELSE LEFT(Beskrivelse, 40) + '...' END FROM Links
Avatar billede lklingenberg Nybegynder
25. august 2002 - 10:13 #9
Works like a charm. Thanx!
Avatar billede tmceu Praktikant
27. august 2002 - 11:19 #10
Det var så lidt :-)
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