webForumDet fria alternativet

Infoga bindestreck

Databaser & SQL

7 svar · 551 visningar · startad av clarkbones

Medlem sedan feb. 20013 023 inlägg
Frågan#1

Hej!

Jag har en accessdatabas som innehåller personnummer, sparade utan bindestrecket. DVS så här:
8203144578
Nu vill jag ha in ett bindestreck på alla posterna så att det blir så här:
820314-4578

Lämplig SQL sökes...eller annat förslag.

Medlem sedan aug. 2000374 inlägg
#2

Hej,

Detta borde fungera, jag har inte tillgång till Access.

SELECT MID("8203144578", 1, 6) & '-' & MID("8203144578", 7, 10)
Medlem sedan feb. 20013 023 inlägg
#3

Hmm, tack..men hur gör jag när jag har c a 2000 poster?

Medlem sedan dec. 200012 464 inlägg
#4

Vad har antalet poster för betydelse?

select mid('8203144578', 1, 6) & '-' & mid('8203144578', 7, 4) 
from t

Korrigerar ett litet fel i Hansens kod.

Medlem sedan feb. 20013 023 inlägg
#5

Tja, det står ju inte 8203144578 i alla poster utan endast i en, vilket jag kanske borde varit tydligare med. Det finns många olika personnummer

Medlem sedan maj 20018 027 inlägg
#6

Borde inte följande funka?

select mid(personnummer, 1, 6) & '-' & mid(personnummer, 7, 4) from t
Medlem sedan feb. 20013 023 inlägg
#7

UlfT skrev:

Borde inte följande funka?

select mid(personnummer, 1, 6) & '-' & mid(personnummer, 7, 4) from t

Tja, det funkar på ett sätt. Min poäng var dock att jag permanent ville ändra till att personnumret skulle innehålla bindestreck, alltså att det i databasen står "781015-2566". Ber om ursäkt för luddig förklaring. Jag löser problemet genom att skapa ett recordset som jag sedan uppdaterar , tror jag.

Medlem sedan dec. 200012 464 inlägg
#8

Gör update direkt.

update t set personnummer = mid(personnummer, 1, 6) & '-' & mid(personnummer, 7, 4)

Recordset behövs enbart då man hämtar data.

398 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
265 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
265 ms — ändringar (db)