access bruger % og ideen med syntaksen er at % fortæller om man er ligeglad med det som kommer efter eller før Select * From personer Where forNavn Like '%A%' vil således vælge alle dem hvor A blot indgår Select * From personer Where forNavn Like '%A' vil tilsvarende vælge alle dem hvor navnet slutter på A
og så kan man bruge _ hvis man vil lave et "wildcard" Jeg kan se efter lidt surfen at nielle måske har ret Så vidt jeg kan forstå vil ældre versioner af access kræve * frem for % og tilsvarende ? istedet for _
Takker boys, så kommer der lige et tillægs spørgsmål... hvis jeg nu skal have alle de poster som ikke starter på et bogstav men fx 1-9 eller .,;-@£$€{[] osv hvordan klare vi så den for der er som sagt temmeligt mange tegn
hmm du kan mig bekendt ikke benytte regulære udtryk i sql og det vil så sige at hvis du ønsker at finde alle dem som starter med et tal fra 1-9 så må du gøre sådan her -- Select * From tabel Where felt Like '1%' Or felt Like '2%' Or felt Like '3%' Or felt Like '4%' Or felt Like '5%' Or felt Like '6%' Or felt Like '7%' Or felt Like '8%' Or felt Like '8%' Or felt Like '9%' -- Du kan benytte wilcarden _ hvis der er et tegn i ordet som kan være hvad som helst -- Select * From tabel Where felt Like 'abe_kat' -- Den vil fange "abeakat, abebkat, abe1kat, abe&kat" osv osv
Men hvis du ønsker at finde så mange forskellige i din database, så kunne det tyde på at du skulle opbygge din database anderledes måske Eller at du kunne udvælge dem i asp og ikke i access, altså -- tegn = Array("1","2","3","4","5","6","7","8","9",".",",",";","-","@","£","{","[","]") set rs = conn.execute("Select * From din_tabel Order By dit_felt" do while not rs.eof lovlig = False For i=0 To Ubound(ulovligeTegn) if tegn(i) = Left(rs("dit_felt"),1) then lovlig = True exit For end if Next if lovlig then response.write "ordet "&rs("dit_felt")&" starter med et tilladt tegn" else response.write "ordet "&rs("dit_felt")&" starter ikke med et tilladt tegn" end if rs.movenext loop ---- på den måde kan du tilegne dig fuldstændig hvilke tegn du vil have de starter med Det skal så siges at ovenstående kan gøres i regulært udtryk, meget mere kompakt at se på, men afhængig af brugeren måske ikke så forståeligt at se på
med regulært udtryk kan det gøres sådan her -- set rs = conn.execute("Select * From din_tabel Order By dit_felt" Set regEx = New RegExp regEx.Pattern = "^[^a-zA-ZæøåÆØÅ].*$" do while not rs.eof if regEx.Test(rs("dit_felt")) then response.write "Ordet "&rs("dit_felt")&" starter ikke med et bogstav a-z eller A-Z eller æ,ø,å eller ÆØÅ " end if rs.movenext loop
Jeg tror at jeg ville løse det ved at tilføje en ekstra kolonne til tabellen – BeholdDenne. Så ville jeg lave en for-løkke i ASP som gennemløb 'a' til 'z', 'æ', 'ø' og 'å' samt andre tegn du gerne ville beholde. For hvert lovligt startbogstav ville jeg køre SQL'en:
SQL = ”UPDATE personer SET beholdDenne = 'ja' WHERE forNavn LIKE 'N%'
Tilsidst ville jeg så slette alle de rækker som ikke havde 'ja' (eller true eller hvad det kunne være du valgte) i feltet:
SQL = ”DELETE FROM personer WHERE beholdDenne <> 'ja'”
NB: Jeg kan forstå at du har en tabel som er blevet ”forurenet” med ulovlige navne, og at du nu vil have ryddet op i denne. I så fald er hele øvelsen vel en engangs-ting? Måske kan det bedre betale sig simpelthen at gøre det manuelt...
For at undgå at det gentager sig i fremtiden bør du tjekke på navne, *før* at de løgges i databasen, og så afvise de som ikke er lovlige.
Tak, men da de kan starte på alle tegn i tegn sættet orker jeg virkelig ikke at lave en array med de forskellige tegn, og da der er temmeligt mange poster i databasen, vil det være helt vildt at køre det hele ud...
så tror jeg tager den via denne løsning SELECT Current_name,US_Status,ID FROM User_DB WHERE Current_Name Not LIKE 'A*' and Not LIKE 'B*' and Not LIKE 'C*' osv osv...
Synes godt om
Ny brugerNybegynder
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.