Avatar billede zurekk Nybegynder
19. august 2007 - 18:58 Der er 22 kommentarer og
1 løsning

Lær din ABC

Hej eksperter,

Jeg skal bruge en:

Sortér: A - B - C - D - E - F - G - H - I............

Hvad er den letteste måde at udskrive alt der starter med et bestemt bogstav på?

Og hvad med alt det øvrige, altså æ,ø,å,tal, andre tegn end A-Z, hvordan får jeg hevet dem ud på én gang :)?

På forhånd tak!
Avatar billede nielle Nybegynder
19. august 2007 - 19:04 #1
SELECT * FROM dinTabel WHERE ditFelt LIKE 'A%'
Avatar billede nielle Nybegynder
19. august 2007 - 19:07 #2
... og:

SELECT * FROM dinTabel WHERE ditFelt REGEXP '$[^a-z]'
Avatar billede zurekk Nybegynder
19. august 2007 - 19:21 #3
Men er det ikke utroligt langsomt med REGEXP?
Og sortere LIKE 'A%' rigtigt? Eller skal der bare en ORDER BY `title` på?
Avatar billede zurekk Nybegynder
19. august 2007 - 19:38 #4
SELECT * FROM dinTabel WHERE ditFelt LIKE 'A%'

Virker fint, tak, smid et svar :D
Avatar billede nielle Nybegynder
19. august 2007 - 19:38 #5
Regexp er ikke "utroligt langsomt", selvom det ikke altid er det hurtigste valg, og her tror jeg faktsik at det er den hurtigste løsning.

Ja, der skal en ORDER BY på hvis der skals orteres.
Avatar billede nielle Nybegynder
19. august 2007 - 19:39 #6
Svar :^)
Avatar billede zurekk Nybegynder
19. august 2007 - 19:42 #7
Hov, hvad med tal og alle andre tegn, hvordan får jeg dem frem =/?
Uden regexp?
Avatar billede olebole Juniormester
19. august 2007 - 19:48 #8
<ole>

Så bliver det vel noget à la:
    SELECT * FROM dinTabel WHERE ditFelt REGEXP '$[^a-zæøå]'

- men dem kan du ikke sortere korrekt uden selv at skrive en sorterings algoritme. Å vil komme før æ og ø, hvis du bruger standard-metoder

/mvh
</bole>
Avatar billede zurekk Nybegynder
19. august 2007 - 19:56 #9
Det prøver jeg lige :D
Avatar billede nielle Nybegynder
19. august 2007 - 19:59 #10
Ah, jeg misforstod lidt dit spørgsmål - troede at du ville behandle æ, ø og å på samme måde som 1, 2, osv.
Avatar billede zurekk Nybegynder
19. august 2007 - 19:59 #11
REGEXP '$[^a-z0-9]'

Ser ikke ud til at virke.

Den finder ikke:
&#65533;bjerg
Avatar billede zurekk Nybegynder
19. august 2007 - 20:00 #12
Der skulle stå
[spørgsmålstegn]bjerg
Avatar billede nielle Nybegynder
19. august 2007 - 20:00 #13
Min fejl:

REGEXP '^[^a-z0-9]'
Avatar billede zurekk Nybegynder
19. august 2007 - 20:01 #14
Nielle >
Nej, det er et engelsk site, så æøå ligger under # og tal under 0-9
Avatar billede zurekk Nybegynder
19. august 2007 - 20:02 #15
Jo, virker fint, glemte bare at bytte $ ud med ^
Avatar billede zurekk Nybegynder
19. august 2007 - 20:03 #16
Damn, hvorfor opdager jeg ikke at du har skrevet :(?

Tak for hjælpen, ole vil du have et par point?
Avatar billede nielle Nybegynder
19. august 2007 - 20:09 #17
Hvis olebole skal have point så må det vist være ,mig som giver dem:

http://www.eksperten.dk/spm/792449
Avatar billede olebole Juniormester
19. august 2007 - 20:19 #18
Hehe ... ellers tak. Jeg så ikke engang fejlen, men var bare optaget af besværet med at sortere skandinaviske bogstaver. Jeg har selv lige siddet og lavet en funktion i JavaScript, der kan.
Det var sødt af dig nielle, men jeg springer over i denne omgang  ;o)
Avatar billede arne_v Ekspert
19. august 2007 - 22:42 #19
Er det ikke bare et spørgsmål om at angive collation ?
Avatar billede arne_v Ekspert
19. august 2007 - 22:43 #20
<?php
function doquery($con, $collating, $description) {
    print "$description:\n";
    print "<ul>\n";
    $query = mysql_query("SELECT f FROM t ORDER BY f $collating") or die(mysql_error());
    while($row = mysql_fetch_array($query)) {
        print "<li>" . $row['f'] . "</li>\n";
    }
    print "</ul>\n";
}
$con = mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("Test", $con) or die(mysql_error());
mysql_query("CREATE TABLE t (f VARCHAR(50))", $con) or die(mysql_error());
mysql_query("INSERT INTO t VALUES('A')", $con) or die(mysql_error());
mysql_query("INSERT INTO t VALUES('B')", $con) or die(mysql_error());
mysql_query("INSERT INTO t VALUES('C')", $con) or die(mysql_error());
mysql_query("INSERT INTO t VALUES('a')", $con) or die(mysql_error());
mysql_query("INSERT INTO t VALUES('b')", $con) or die(mysql_error());
mysql_query("INSERT INTO t VALUES('c')", $con) or die(mysql_error());
mysql_query("INSERT INTO t VALUES('1')", $con) or die(mysql_error());
mysql_query("INSERT INTO t VALUES('2')", $con) or die(mysql_error());
mysql_query("INSERT INTO t VALUES('3')", $con) or die(mysql_error());
mysql_query("INSERT INTO t VALUES('Æ')", $con) or die(mysql_error());
mysql_query("INSERT INTO t VALUES('Ø')", $con) or die(mysql_error());
mysql_query("INSERT INTO t VALUES('Å')", $con) or die(mysql_error());
mysql_query("INSERT INTO t VALUES('æ')", $con) or die(mysql_error());
mysql_query("INSERT INTO t VALUES('ø')", $con) or die(mysql_error());
mysql_query("INSERT INTO t VALUES('å')", $con) or die(mysql_error());
doquery($con, "", "Default on my system");
doquery($con, "COLLATE LATIN1_GENERAL_CI", "Explicit general");
doquery($con, "COLLATE LATIN1_DANISH_CI", "Explicit danish");
doquery($con, "COLLATE LATIN1_BIN", "Explicit binary");
mysql_query("DROP TABLE t", $con)  or die(mysql_error());
mysql_close($con);
?>
Avatar billede arne_v Ekspert
19. august 2007 - 22:43 #21
Default on my system:
1
2
3
A
a
b
B
c
C
Å
å
æ
Æ
Ø
ø
Explicit general:
1
2
3
A
a
å
Å
æ
Æ
B
b
C
c
Ø
ø
Explicit danish:
1
2
3
A
a
b
B
c
C
æ
Æ
Ø
ø
Å
å
Explicit binary:
1
2
3
A
B
C
a
b
c
Å
Æ
Ø
å
æ
ø
Avatar billede zurekk Nybegynder
20. august 2007 - 13:09 #22
Tror ikke det er nødvendigt arne, LIKE og REGEXP virker fint.

Men tak alligevel :D
Avatar billede arne_v Ekspert
20. august 2007 - 19:19 #23
Det var ogsaa mere til olebole.
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