webForumDet fria alternativet

Kasta om ord?

ASP

3 svar · 488 visningar · startad av Gunnar_B

Medlem sedan nov. 200528 inlägg
Frågan#1

Om jag har en databas med ett fält "Namn" som innehåller: "Efternamn, Förnamn".

Fast jag vill skriva ut det "Förnamn Efternamn"... hur skulle jag skriva en sådan funktion? Är väl att kolla efter ett kommatecken och sedan kasta om det på något sätt :) Alla "Namn" fält innehåller inte heller både "Efternamn, Förnamn".. utan vissa kan innehålla bara ett "efternamn" men då finns det inget kommatecken heller.

Nån som har en bra funktion på detta?

Medlem sedan dec. 20025 483 inlägg
#2
dim re
set re = new regexp
re.pattern = "^([^,]+)(?:,\s*(.+))?$"

dim matches
set matches = re.execute(rs("Namn"))
set re = nothing

if matches.count > 0 then
  ' matches(0).submatches(1) = Förnamn
  ' matches(0).submatches(0) = Efternamn
end if

Om förnamnet existerar är len(matches(0).submatches(1)) > 0.

Medlem sedan okt. 20041 556 inlägg
#3
set connection = "din_databasconnection"
set rs = connection.execute("select namn from min_tabell")
Do while rs.eof
    do_it(rs(0))
rs.movenext
Loop

Sub do_it(fld)
    If instr(fld,",")>0 then 'Komma finns i strängen
        connection.execute("UPDATE min_tabell SET efternamn='"& trim(split(fld,",")(0))&"', fornamn='"& trim(split(fld,",")(1))  &"'"),,128
    Else
        connection.execute("UPDATE min_tabell SET efternamn='"& trim(fld) &"'"),,128
    End if
End sub
Medlem sedan nov. 200528 inlägg
#4

Tack så mycket! Peter S förslag fungerar utmärkt

263 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)