webForumDet fria alternativet

"Replaca" flera tecken i samma sträng

Databaser & SQL

3 svar · 244 visningar · startad av ulf_gee

Medlem sedan mars 200233 inlägg
Frågan#1

Hej
Jag skulle vilja, i SQL-analyzer omvandla följande sträng: +46 (46) 36 XXXX till +46 46 36 XXXX genom att använda ex:
SELECT Replace(strPhone,'(46)','46') as phone from tblPerson WHERE intPersonId = 1
Dvs. jag vill ta bort parenterserna.
Jag kan göra en replace där jag byter ut (46) mot 46, men det funkar ju bara om användaren har 46 som riktnummer.
Likaså kan jag göra en replace där jag ersätter en av parenterserna med med ingeting. Det funkar också bra, men bara för en av parenterserna. Jag kan alltså göra en replace sats som ser ut:
Replace(strPhone,'(','') och får du resultatet +46 46) 36 XXXX, men använder jag Replace(strPhone,'()','') funkar det inte.
Alltså, hur gör jag för att replaca flera tecken skilda från varandra i samma sträng?
Tackar!

Medlem sedan dec. 200012 464 inlägg
#2
replace(replace(strPhone,'(','''),')','')
Medlem sedan mars 200233 inlägg
#3

Lysande, det tackar vi för
Då undrar jag om där finns något (lika enkelt) sätt att formatera strängen så att alla telefonnummer får samma utseende?
Så istället för att ett nummer ser ut +46 46 XX XX XX och ett +46 46 XXXXX osv. så vill jag att alla nummer (som har riktnummer 46 vill jag tillägga) får följande utseende +46 46 XX XXXX
Låter sig detta göras månne :q
Tack.

Medlem sedan dec. 200012 464 inlägg
#4

Att du har olika format i databasen gör det mer komplicerat.

Det blir enklast om du gjorde så att alla värden har samma format i tabellen.

Om du har formatet

+46 46 XXXXX

substring(strPhone,1,9) + ' ' + substring(strPhone,10,len(strPhone) - 9)

Då har det ingen betydelse hur många X värdet innehåller.

255 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)