[SQL/VB] Omzetten rare tekens

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Guffy
  • Registratie: Maart 2001
  • Laatst online: 30-09-2008
Heb een ms sql 2000 db waar ik namen van personen in opsla (varchar)
Deze namen zijn met rare tekens zoals bijvoorbeeld een ö
Nu moet ik emailadressen gaan aanmaken van deze namen maar dan zonder die rare tekens...
Een ö moet dan een oe worden.
Een ringel-s moet vervangen worden door 2 ss-en.

Hoe pak ik dit aan? :? :? :?

Ik zoek me al rot met unicode/ascii/utf-8 enzo maar volgens mij moet ik echt een functie schrijven die een ö vervangt in een oe

Bestaat er tevens ergens een vertaaltabel die aangeeft dat een ö een oe "moet" worden?

Acties:
  • 0 Henk 'm!

  • Redshark
  • Registratie: Mei 2002
  • Nu online
Je kunt hiervoor de replace functie gebruiken. Voorbeeld, rechtstreeks uit de help van SQL 2000:
Examples
This example replaces the string cde in abcdefghi with xxx.
SQL:
1
2
SELECT REPLACE('abcdefghicde','cde','xxx')
GO



Dit geeft:
------------
abxxxfghixxx
(1 row(s) affected)

Acties:
  • 0 Henk 'm!

  • Elvis
  • Registratie: Juli 2002
  • Laatst online: 18-11-2017

Elvis

Echo Lima Victor India Sierra

Die "vertaaldatabank" zal je zelf moeten aanmaken vrees ik.
Gewoon een table met de rare tekens en de tekens waardoor ze vervangen moeten worden, lijkt me voldoende.

Dan maak je een VB script, die in je "namen"-table elke naam overloopt op zoek naar een raar teken dat voorkomt in die vertaaldb.
(Ik weet niet hoe het zit met VB (al weer zo lang geleden), maar in PHP bv. heb je een functie die tekens(naar keuze) in een string van tekens verandert door andere tekens(ook naar keuze)).

Verder is het imo in de toekomst makkelijker dat je de rare tekens vervangt op het moment dat je een nieuw record aan je DB gaat toevoegen... (niet goed gelezen)

[GoT] TF2 Clan


Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Elvis schreef op donderdag 24 april 2008 @ 11:37:
...
Verder is het imo in de toekomst makkelijker dat je de rare tekens vervangt op het moment dat je een nieuw record aan je DB gaat toevoegen...
Wel even de TS goed lezen. Het gaat om het aanmaken van e-mailadressen op basis van "echte namen" hij wil dus niet de namen zelf aanpassen.

Acties:
  • 0 Henk 'm!

  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 13-12-2024
-- edit: weer eens niet goed gelezen...

het overigens aan te raden een nvarchar (unicode) veld te gebruiken ipv een varhar

[ Voor 46% gewijzigd door 4of9 op 24-04-2008 11:43 ]

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Misschien kan je op basis van deze vb6 iets doen?

http://www.devx.com/vb2themax/Tip/19614

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 22-05 08:46

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Als het om een eenmalig iets gaat zou ik het gewoon quick'n'dirty doen...

SQL:
1
2
3
4
Update MyTable set email = SomeField
Update MyTable set email = Replace(email , 'ö', 'oe')
Update MyTable set email = Replace(email , 'ß', 'ss')
etc...

[ Voor 19% gewijzigd door RobIII op 24-04-2008 13:52 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • j_du_pee
  • Registratie: Maart 2000
  • Laatst online: 23-09-2024

j_du_pee

du pain, du vin, du pee

RobIII schreef op donderdag 24 april 2008 @ 13:52:
Als het om een eenmalig iets gaat zou ik het gewoon quick'n'dirty doen...

SQL:
1
2
3
4
Update MyTable set email = SomeField
Update MyTable set email = Replace(email , 'ö', 'oe')
Update MyTable set email = Replace(email , 'ß', 'ss')
etc...
zo zou ik het ook doen. Als controle kun je kijken of er characters overblijven met een ascii waarde boven de 128 ;)

En die lijst kun je in dit topic vinden, zodra je klaar bent, toch? ;) :P

denk dat je hier misschien wat aan hebt:
http://www.asciitable.com/

[ Voor 6% gewijzigd door j_du_pee op 24-04-2008 14:03 ]

kaart != map && bottel != fles
Wacht op antwoord


Acties:
  • 0 Henk 'm!

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

RobIII schreef op donderdag 24 april 2008 @ 13:52:
Als het om een eenmalig iets gaat zou ik het gewoon quick'n'dirty doen...

SQL:
1
2
3
4
Update MyTable set email = SomeField
Update MyTable set email = Replace(email , 'ö', 'oe')
Update MyTable set email = Replace(email , 'ß', 'ss')
etc...
Plaats de replace statements in een User Defined Functie en je kunt hem gebruiken wanneer je hem nodig hebt. Dergelijke functie kun je op dezelfde manier gebruiken als de native database functies LEN, LEFT, etc.

Een eenmalig update:
SQL:
1
UPDATE MyTable SET email = ConvertEmailAddress(email);


Aanmaken van een nieuw record
SQL:
1
INSERT INTO MyTable(Name, Email) VALUES ('Bløf', ConvertEmailAddress('bløf@bedrijf.nl'))

Vraag is alleen of je er dan bluf (fonetisch geschreven) of blof (dwarsstreep eruit) van maakt..

If it isn't broken, fix it until it is..


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 22-05 08:46

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Niemand_Anders schreef op donderdag 24 april 2008 @ 14:52:
Plaats de replace statements in een User Defined Functie en je kunt hem gebruiken wanneer je hem nodig hebt.
Daarom had ik het ook over een eenmalig iets; als dit een structureel probleem is dan zou ik er zelfs al in de client voor zorgen dat het gefixed wordt voordat het überhaupt richting DB gaat. Dit is IMHO namelijk niet de verantwoordelijkheid van het DBMS maar gewoon business logic.
Niemand_Anders schreef op donderdag 24 april 2008 @ 14:52:
Vraag is alleen of je er dan bluf (fonetisch geschreven) of blof (dwarsstreep eruit) van maakt..
Of bleuf :+

[ Voor 6% gewijzigd door RobIII op 24-04-2008 15:00 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1