![]() |
MySQL lyder inte mig :huh:
Detta är min query: Kod:
SELECT * http://karlroos.se/skit/mysql.png Som ni ser så har ingen av fälten "date" värdet 2008-01-30 ! <_< Finns det något jag kan göra? Tack på förhand! |
Till att börja med borde du använda WHERE user IN(värde, värde, värde) istället för OR-frågan. Felet beror på att AND binder hårdare än OR. I det här fallet blir din fråga de första valen ELLER user = '781018407' AND date = '2008-01-30'. DU måste alltså lägga en parantes kring alla OR-grejerna.
Sedan känns det inte så smidigt att lagra ett heltal som en sträng heller... |
Använda parentes.
Eller skriva den som Kod:
SELECT * |
Okej! :)
Tack så mycket, funkar utmärkt! |
När du villkorar ett värde som du vet är ett tal så ska du ta bort fnuttarna. Annars måste mysql slösa kraft på att göra om talet till en sträng innan jämförelsen.
...where user=123456 ska det vara och inte ...where user='123456' |
Citat:
|
Citat:
|
Citat:
Tabellen är BigINT, är det smartare med user=123456 då? |
Citat:
Det finns vissa skillnader mellan att använda strängar och tal inte bara i effektivitet och platsnyttjande. Vid strängar är exempelvis stängarna '001234', '01234' och '1234' helt skilda "värden". Om det hande om tal så är det ingen skillnad mellan 001234 och 1234. Samma sak gäller om du anger bråktal med eller utan ' Talet 234.3 är samma tal som 234.300 men strängen '234.3' är inte detsamma som '234.300'. Det kan förutom resursslöseri alltså även innebära svårupptäckta buggar. |
Citat:
|
Nej. Det har inget med effiktiviteten att göra. Jag försökte bara tydliggöra att om man är slarvig på att hålla reda på vilken datatyp man använder så kan problem uppstå. (Även om det kan påpekas att heltal är effekivare att lagra och bearbeta än tal med decimaler.)
Nummer sparas effektivast som heltal dvs. INT i olika storlekar. Att spara nummer som strängar tar onödig plats och är också mindre effektivt prestandamässigt. Vad du bör tänka på är framförallt att vara konsekvent. Om du lagrar data så hämta den som en sträng (med ''), om det är ett siffra lagrad som ett heltal så hämta som ett heltal (utan '') precis som Magnus_A påpekat i sitt inlägg om de så kallande "fnuttarna". |
Okej, då förstår jag!
Tack så mycket :) |
Alla tider är GMT +2. Klockan är nu 19:47. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson