[(T)SQL] Selecteren op niet alpha numeric characters

Pagina: 1
Acties:

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Topicstarter
Ik heb een oude database, waar een aantal records instaan die niet helemaal correct zijn. Deze record bevatten speciale tekens zoals CHAR(13) en CHAR(10). Nu wil een lijst genereren, met deze records.

Aangezien ik niet weet of er nog meer records zijn met andere foutieve characters zou ik alle record willen selecteren die niet binnen [a-Z0-9] vallen. Alleen kan (T)-SQL voor zover ik het weet geen regular expressions aan. Iemand een passende oplossing?

ik heb alleen SQL 7 !

[ Voor 3% gewijzigd door LuCarD op 31-01-2005 12:01 ]

Programmer - an organism that turns coffee into software.


  • P_de_B
  • Registratie: Juli 2003
  • Niet online

Oops! Google Chrome could not find www.rijks%20museum.nl


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Topicstarter
En hoe kan je dat gebruiken in een select statement?

select id from customer where dbo.find_regular_expression(surname, "[a-Z0-9]" ,0) = 1 ??

Programmer - an organism that turns coffee into software.


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Er staat een redelijk duidelijk voorbeeld bij. Ik denk niet dat ik het uitgebreider hier kan vertellen zonder de exacte text over te typen, maar in principe kun je idd gewoon een User defiend functie in je WHERE gebruiken.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Topicstarter
P_de_B schreef op maandag 31 januari 2005 @ 11:57:
Er staat een redelijk duidelijk voorbeeld bij. Ik denk niet dat ik het uitgebreider hier kan vertellen zonder de exacte text over te typen, maar in principe kun je idd gewoon een User defiend functie in je WHERE gebruiken.
Ermm.. Vergeten vertellen in de startpost.... Maar ik heb alleen MS SQL 7 tot mijn beschikking. :(

sorry

Programmer - an organism that turns coffee into software.


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Is dit een eenmalige geschiedenis, dan kun je beter alle records ophalen en 1 voor 1 bekijken in een clientprogramma/scriptje dat wel RegExps ondersteunt.

Een ander alternatief is de code uit het artikel in een Stored Proc te gooien en elke record met een cursor door de sp te laten lopen.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Topicstarter
P_de_B schreef op maandag 31 januari 2005 @ 12:27:
Is dit een eenmalige geschiedenis, dan kun je beter alle records ophalen en 1 voor 1 bekijken in een clientprogramma/scriptje dat wel RegExps ondersteunt.

Een ander alternatief is de code uit het artikel in een Stored Proc te gooien en elke record met een cursor door de sp te laten lopen.
Ik ben nu bezig met een klein vb programma te maken die dat doet. Het zijn gelukkig maar 500000 records. En kleine 30 text velden... :(

Programmer - an organism that turns coffee into software.


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Om het probleem met de velde kolommen wat te verminderen zou je ze kunnen concatten naar 1 (of enkele afhankelijk van de grootte) kolommen in je select. Je hoeft dan in je progje niet zoveel kolommen bijlangs. Voor de rest blijft een een rotwerkje wat je denk ik niet veel meer kunt vereenvoudigen.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Topicstarter
P_de_B schreef op maandag 31 januari 2005 @ 12:41:
Om het probleem met de velde kolommen wat te verminderen zou je ze kunnen concatten naar 1 (of enkele afhankelijk van de grootte) kolommen in je select. Je hoeft dan in je progje niet zoveel kolommen bijlangs. Voor de rest blijft een een rotwerkje wat je denk ik niet veel meer kunt vereenvoudigen.
Ik ga alle velden in een dictionary object gooien. En die loopt dan per record alles door. Zo krijg ik tenminste ook een raport in welk veld de fout zit. Hoef ik later minder te zoeken... :)

Programmer - an organism that turns coffee into software.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Uhm wat doe je moeilijk?
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SqlConnection conn = new SqlConnection(connectString);
SqlCommand cmd = new SqlCommand("SELECT * FROM table", conn);
SqlDataReader rdr = cmd.ExecuteReader();

while(rdr.Read())
{
  for(int i = 0; i != rdr.FieldCount; i++)
  {
    string val = rdr[i].ToString();
    for(int j = 0; j != val.Length; j++)
      if(val[j] < ' ')
        MessageBox(string.Format("Row {0}, Field {1} has invalid value {2}", rdr["field_id"], rdr.GetName(i), val));
  }
}
rdr.Close();
conn.Close();

En klaar is Klara? :)

Professionele website nodig?

Pagina: 1