Toon posts:

[SQL2000] Query prob

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,
zou iemand me kunnen helpen met het volgende : heb een tabel gevuld met IP adressen in de 10.xxx.yyy.zzz reeks. Ik zou via een query willen tellen hoeveel keer de eerste 3 octets (10.xxx.yyy) voorkomen. Probleem is dat zowel "10.2.2.z" kan voorkomen, als zowel "10.201.2.z". Een "left" functie lukt dus niet aangezien het niet altijd evenlang is.

Ik dacht missch aan een manier om het laatste puntje te vinden in het IP nr ofzo ?
Maar zover reikt m'n kennis niet, en missch is er nog andere oplossing.

Alvast bedankt !!

[ Voor 5% gewijzigd door Verwijderd op 10-02-2004 23:20 ]


  • vinnux
  • Registratie: Maart 2001
  • Niet online
Er is ook een methode om een IP adres met een andere notatie op te slaan, welke meer geschikt is om er mee te zoeken. Maar kan hem zo niet vinden :(

Natuurlijk kun je ook vier tinyint velden van maken...

[ Voor 29% gewijzigd door vinnux op 10-02-2004 23:25 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

Een eenvoudige methode is om een IP-adres op te slaan als Long. Stukje voorbeeldcode van mij:
Visual Basic .NET:
1
2
3
4
5
6
7
        Private Shared Function ConvertIPv4ToLong(ByVal ip As IPAddress) As Long

            Dim IPv4 As String() = Split(ip.ToString, ".")

            Return 256^3 * IPv4(0) + 256^2 * IPv4(1) + 256^1 * IPv4(2) + IPv4(3) * 256^0

        End Function


Je kan op deze manier makkelijker reeksen controleren. :)

[ Voor 16% gewijzigd door gorgi_19 op 10-02-2004 23:24 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
TIP: kijk eens naar de PARSENAME functie. Die is hier niet voor bedoeld, maar het werkt wel goed :)

code:
1
2
SELECT PARSENAME ('10.0.0.1',1) -- geeft 10
SELECT PARSENAME ('10.0.0.1',3) -- geeft 0



edit:
Trouwens, als je het via string parsen wilt doen kun je de CHARINDEX functie gebruiken. Er zijn best een aantal handige string functies beschikbaar. Kijk maar eens in BooksOnline onder 'String functions'

[ Voor 39% gewijzigd door P_de_B op 11-02-2004 08:05 ]

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


Verwijderd

Topicstarter
bedankt voor jullie reacties, ik kom er mogelijk met wat trial-and-error wel uit !

Thx

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

P_de_B schreef op 11 februari 2004 @ 08:03:
TIP: kijk eens naar de PARSENAME functie. Die is hier niet voor bedoeld, maar het werkt wel goed :)

code:
1
2
SELECT PARSENAME ('10.0.0.1',1) -- geeft 10
SELECT PARSENAME ('10.0.0.1',3) -- geeft 0



edit:
Trouwens, als je het via string parsen wilt doen kun je de CHARINDEX functie gebruiken. Er zijn best een aantal handige string functies beschikbaar. Kijk maar eens in BooksOnline onder 'String functions'
Het enige nadeel van deze methodiek vind ik dat als je in range van 10.0.5.x wilt hebben, je drie AND-functies moet gebruiken in je WHERE statement.

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1