Sitter och klurar på en funktion för att söka specifikationer på produkter. Att visa specifikation för en produkt är inget problem utan det är när man ska söka på speciella värden det blir lite klurigt. Ska försöka förklara mina tankar. Du kan ju använda wildcards : Gav en hel del. Dock blev det error när den kom till text. Löst detta så här. Just det, glömde säga att du bara kan köra den frågan på numeriska heltalsvärden på alfanumerisk format. Kul att det löste sig ändå :-) Nästa fundering: Prestandan? Nu vet jag inte hur mycket data det handlar om, men jag kan tänka mig att prestandan kommer bli lidande med lite tryck på det hela. Antal användare samtidigt är inte många dock blir det en hel del rader i slutändan. Vi får se när grunden är byggd och vi belastar databasen. Om det inte framgår så är min fundering att allt vad index och liknande heter inte går att använda eftersom att databasen för varenda rad måste konvertera (hemska tanke) till en int, för att sedan kunna jämföra. Med ett index hade den bara behövt slå ett öga i indexet, sedan vet den vilka rader som är aktuella.SQL fråga för produktspecifikationer.
I en databas finns en stor mängd produkter. Till dessa produkter finns flera specifikationer. Dessa specifikationer ligger i en egen tabell. Produkternas specifikation kan bestå av allt från ett värde till 30-40st olika värden beroende på produkt.
I en av specifiaktionstabellens kolumner (typ varchar) finns alla värden. Värdena kan i visa fall vara siffror, andra fall text. Nu vill jag kunna söka efter något värde och det går bra så länge det är text eller en bestämd siffra. Problemmet uppstår men när man ska söka eftervärden som är mer eller mindre än en viss siffra (eftersom kolumnen består av både siffror och text.)
Hur kan man lösa detta?
Databas: MS SQL 2005
Förklarar jag dåligt, fråga så förtydligare jag så gott det går. :-)
/Janne Sv: SQL fråga för produktspecifikationer.
select * from ProductSpecification where value LIKE '%sök%'
[Edit : läste inte din fråga ordentligt första gången. Det du är ute efter är nog mer något sånt här :
select * from ProductSpecification where cast (value as int)>50
Jag tror det fungerar i alla fall.]Sv:SQL fråga för produktspecifikationer.
SELECT *
FROM ProductSpecifikation
WHERE (isnumeric(ProductSpecificationValue) = 1) AND (CAST(ProductSpecificationValue AS Decimal(6, 2)) > 20)
Tack för hjälpen, fick en bra spark åt rätt håll.Sv: SQL fråga för produktspecifikationer.
Sv:SQL fråga för produktspecifikationer.
Sv: SQL fråga för produktspecifikationer.
Sv:SQL fråga för produktspecifikationer.
En fundering: Det går inte att designa så att det både finns en varchar och en int-kolumn? Beroende på jämförelsetyp så kan olika kolumner användas?