21. maj 2003 - 08:56Der er
15 kommentarer og 1 løsning
Konvertere tekst til tal
Hej Eksperter,
jeg har en Access database der i en kolonne nogle steder indeholder tal andre steder tekst. Derfor er egenskaben for denne kolonne sat til Tekst.
Det handler om postnummer!
Databasen indeholder adresser fra hele verden og nogle steder er der også bogstaver i postnummeret.
Men hvis jeg laver en afgrænsning på land til at være tyskland er der kun tal i kolonnen, og jeg vil nu gerne kunne udfiltrere fra f.eks. 25000 - 72000
Jeg bruger BETWEEN i min SQL sætning, men kom i tanke om at den nok har svært ved at tjekke dette i en tekst streng.
Kan man på nogen måde konvertere tekststrengen til Integer så jeg kan lave den ønskede filtrering?
Vel at mærke uden at ændre databasekolonnen til tal, da den jo af og til også indeholder tekst.
Kommunerne har digitaliseret indgangen for borgerne. Men bag skærmen håndteres mange arbejdsgange stadig manuelt mellem systemer, mails og organisatoriske siloer.
Jeg tror ikke der er problemer med BETWEEN på tekstkolonner, hvis værdierne er formateret på samme måde (fx 5 cifre, ingen blanke osv.). Har du konstateret et problem med det?
Det ser skummelt ud - der mangler nogle 'AND' i WHERE-delen, mellem de forskellige kriterier.
Og den med (customer.CatID1 OR customer.CatID2 OR customer.CatID3) = x duer ikke, du er nødt til at lave (customer.CatID1 = x OR customer.CatID2 = x OR customer.CatID3 = x)
SQL = "SELECT country.*, customer.* FROM customer " &_ "LEFT JOIN country ON country.CountryID = customer.Country " &_ "WHERE customer.Country = '" & strCountry & "' AND " &_ "customer.Zip BETWEEN '" & intZipFrom & "' AND '" & intZipTo & "' AND "&_ "(customer.CatID1 = '" & strCategory & "' OR customer.CatID2 = '" & strCategory & "' OR customer.CatID3 = '" & strCategory & "') " &_ "ORDER BY country.CountryName, customer.Name"
Når sådan noget ikke virker kan det tit hjælpe at kigge på SQL'en lige inden den udføres, altså efter at strengen er opbygget. Så kan man også tage strengen med over i Access i en forespørgsel og lege med den indtil det virker.
Jeg mente indholdet af variablen SQL efter den kodelinie - kan du ikke printe den ud eller sådan noget. Det kan godt være lidt svært at se hvad alle de & og " og _ bliver til. Sommetider bliver det til noget andet end man regner med.
SELECT country.*, customer.* FROM customer LEFT JOIN country ON country.CountryID = customer.Country WHERE customer.Country = 'de' AND customer.CatID1 = 'Cat1' OR customer.Country = 'de' AND customer.CatID2 = Cat1' OR customer.Country = 'de' AND customer.CatID3 = 'Cat1' ORDER BY country.CountryName, customer.Name
JA - den ser godt nok fuldstændig bort fra postnumrene!!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.