Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Sql statement

Postades av 2001-10-20 17:45:00 - Frans Englich, i forum databaser, Tråden har 7 Kommentarer och lästs av 828 personer

Jag exekverar följande sql kommando från vb men det returnerar inga poster:
SELECT * FROM prim_customer WHERE (prim_customer.lastname = 'gunnars bilar') AND (prim_customer.firstname = NULL);

Så här ser det ut, när jag kör det från Mysql's shell:

mysql> SELECT * FROM prim_customer;
+----+-----------+---------------+---------------+----------+---------+---------+------------+--------+------+-------+---------------------+
| id | firstname | lastname | address | postcode | city | country | phone | mobile | fax | email | description |
+----+-----------+---------------+---------------+----------+---------+---------+------------+--------+------+-------+---------------------+
| 1 | Frans | Englich | Fjeliev. 15A | 227-36 | Lund | NULL | 046-148896 | NULL | NULL | NULL | NULL |
| 2 | NULL | Gunnars bilar | bananvagen 12 | 12365 | veberod | NULL | 08-157874 | NULL | NULL | NULL | Gor javla bra bilar |
+----+-----------+---------------+---------------+----------+---------+---------+------------+--------+------+-------+---------------------+
2 rows in set (0.00 sec)

mysql> SELECT * FROM prim_customer WHERE (prim_customer.lastname = 'gunnars bilar') AND (prim_customer.firstname = NULL);
Empty set (0.00 sec)

mysql>

firstname är ju NULL och lastname stämmer. Vad är fel?

mvh Frans


Svara

Sv: Sql statement

Postades av 2001-10-20 17:50:00 - Andreas Hillqvist

Operationer med null ger null som svar. Testa:

SELECT * FROM prim_customer WHERE (prim_customer.lastname = 'gunnars bilar') AND (prim_customer.firstname Is NULL);


Svara

Sv: Sql statement

Postades av 2001-10-20 18:13:00 - Frans Englich

Tack, fungerade perfekt.

Jag har en till fråga angående null:

Jag kör följande kod men det resulterar i "object required"
If objrst(2) Is Not Null Then
txtLastName.Text = objrst(2)
End If

Jag kan ju inte använda <> istället för "is Not" och = fungerar inte istället för is. vad är lösningen?

mvh Frans


Svara

Sv: Sql statement

Postades av 2001-10-20 18:37:00 - Johan Djupmarker

If Not IsNull(objrst(2)) Then
txtLastName.Text = objrst(2)
End If

/Johan


Svara

Sv: Sql statement

Postades av 2001-10-20 19:55:00 - Frans Englich

Stiligt!

Jag har en till fråga. Om jag vill ta reda på antalet poster i en tabell, vilken är den snabbaste lösningen? Jag skulle kunna köra t.ex: "SELECT id FROM prim_customer" och sedan checka vad record count är men det verkar lite omständigt..

mvh Frans


Svara

Sv: Sql statement

Postades av 2001-10-20 21:05:00 - Andreas Hillqvist

Använd följande fråga:
"SELECT Count(*) as RecCount FROM prim_customer"


Svara

Sv: Sql statement

Postades av 2001-10-22 12:27:00 - Johan Käll

Ska man vara lite petig ska man skriva in id-fältet istället för * i count-funktionen. Då kan man få det att bli ytterligare lite snabbare.

"SELECT Count(id) as RecCount FROM prim_customer"



Svara

Sv: Sql statement

Postades av 2001-10-22 13:24:00 - Christoffer Hedgate

Det stämmer ej att COUNT(*) är långsammare än COUNT(kolumnnamn). Och man ska definitivt inte _alltid_ använda COUNT(kolumnnamn), även om det finns situationer när man kan göra det.

För det första måste man vara medveten om skillnaden dem emellan. COUNT(kolumnnamn) kommer att räkna antalet rader där kolumnnamn inte är NULL, medan COUNT(*) kommer att räkna antalet rader i tabellen utan att bry sig om vad de innehåller. Alltså kan de ge olika resultat om kolumnnamn tillåter NULL.

Många tror att COUNT(kolumnnamn) skulle vara snabbare än COUNT(*), därför att COUNT(*) skulle behöva läsa in hela raderna från datasidorna för att räkna antalet rader, medan COUNT(kolumnnamn) endast skulle behöva kontrollera den angivna kolumnen. Detta stämmer naturligtvis inte, av flera anledningar.

För det första så kan man inte läsa in endast enstaka kolumner från datasidorna, utan man måste isf läsa in hela datan och sen kontrollera den eftersökta kolumnen.

Finns det ett index som täcker den angivna kolumnen kan man naturligtvis läsa in raderna endast från indexet och kontrollera kolumnen, för att på så vis slippa läsa in hela datasidorna (vilket SQL Server naturligtvis gör automatiskt om den kan). Men det gäller självklart inte bara COUNT(kolumnnamn) utan även COUNT(*) kommer att använda ett sådant index för att räkna antal rader.

I vissa fall kanske det inte finns ett index som täcker den angivna kolumnen men det finns ett (eller flera...) andra index. Isf skulle COUNT(*) gå mycket snabbare, eftersom den skulle nöja sig med att räkna antal rader i indexet när COUNT(kolumnnamn) skulle behöva hämta datasidorna för att kontrollera kolumnens värde.

I vilket fall som helst så går det marginellt (extremt marginellt om det finns ett användbart index på kolumnen) snabbare att köra COUNT(*) eftersom den endast behöver titta i sidhuvudet hur många rader som ingår, medan COUNT(kolumnnamn) måste gå in på varje rad för att kontrollera den angivna kolumnen (förutom om kolumnen ej tillåter NULL-värden, i vilket fall 'det blir oavgjort').


Som jag nämnde i början finns det naturligtvis situationer när man vill köra COUNT(kolumnnamn), exempelvis om man endast är intresserad av de rader där värdet i kolumnen ej är NULL.


Bonuspoäng till den som nämner en typisk sådan situation där man ska använda COUNT(kolumnnamn) istället för COUNT(*). En ledtråd är att det har att göra med att använda COUNT tillsammans med något annat... :)


Svara

Nyligen

  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 717
27 958
271 751
3 403
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies