16. november 2005 - 23:51Der er
4 kommentarer og 1 løsning
forskellige kombinationer ud fra et varenummer i SQL
Hej Jeg har brug for en sql sætning der udfra et varenummer på 8 tal/bogstaver - XXXXXXXX kan finde andre varenumre der minder om det varenummer jeg søger på. feks BCXXXXXX - udfra dette skulle den så kunne finde følgende 3 andre varenumre hvis det findes i DataBasen - 8CXXXXXX, B6XXXXXX og 86XXXXXX. Jeg har brugt vildcards i min søgning, men den er ikke 100%. Der skal tjekkes udfra nedenstående liste.. Ved ikke om det kan lade sig gøre at lave 100% i SQL , brugte også ASP til min løsning, der så ikke viste sig at være god nok. Håber der er en derude med et svar, for den er sgu lidt kompleks.. B tjekkes som 8 8 tjekkes som B G tjekkes som C C tjekkes som G G tjekkes som 6 6 tjekkes som G Z tjekkes som 2 2 tjekkes som Z 5 tjekkes som S S tjekkes som 5
200 point til den der kan løse den eller komme med den endelige ide til det...
Med kunstig intelligens skaber HP’s nye OmniBook X 14 en unik og skræddersyet brugeroplevelse målrettet dem, der ønsker høj ydeevne og intelligente funktioner
Jeg ville helst kunne kombinere det med SQL og ASP - men vil da ikke udelukke at det kunne være C# - har bare resten af programmet færdigt i asp.. men grundlæggende må logikken også kunne bruges i hvilket som helst sprog ik ?
problemet er jo lidt at man kan få temmelig mange kombinationer.. men det kan selvfølgelig begrænses ved hjælp af wildcards.. feks på eksemplet jeg gav i starten "BCXXXXXX" hvor wildcardet så ville være "__XXXXXX" , så ville man da begrænse mængden af data den skal søge igennem..
Fandt selv ud af det.. det hele skrevet i SQL og lagt som en stored procedure
Har så yderligere oprettet en tabel indeholdende (SymbolMix) der har alle de kombinationer liggende der kan søges på..
CREATE PROCEDURE [dbo].[GetRefNumberMix] @strRefNumber nchar(8) AS SELECT * FROM RefNumbers WHERE Id IN (SELECT Id FROM RefNumbers INNER JOIN SymbolMix ON (MixSymbol = SUBSTRING(RefNumber, 1, 1) AND Symbol = SUBSTRING(@strRefNumber, 1, 1))) AND Id IN (SELECT Id FROM RefNumbers INNER JOIN SymbolMix ON (MixSymbol = SUBSTRING(RefNumber, 2, 1) AND Symbol = SUBSTRING(@strRefNumber, 2, 1))) AND Id IN (SELECT Id FROM RefNumbers INNER JOIN SymbolMix ON (MixSymbol = SUBSTRING(RefNumber, 3, 1) AND Symbol = SUBSTRING(@strRefNumber, 3, 1))) AND Id IN (SELECT Id FROM RefNumbers INNER JOIN SymbolMix ON (MixSymbol = SUBSTRING(RefNumber, 4, 1) AND Symbol = SUBSTRING(@strRefNumber, 4, 1))) AND Id IN (SELECT Id FROM RefNumbers INNER JOIN SymbolMix ON (MixSymbol = SUBSTRING(RefNumber, 5, 1) AND Symbol = SUBSTRING(@strRefNumber, 5, 1))) AND Id IN (SELECT Id FROM RefNumbers INNER JOIN SymbolMix ON (MixSymbol = SUBSTRING(RefNumber, 6, 1) AND Symbol = SUBSTRING(@strRefNumber, 6, 1))) AND Id IN (SELECT Id FROM RefNumbers INNER JOIN SymbolMix ON (MixSymbol = SUBSTRING(RefNumber, 7, 1) AND Symbol = SUBSTRING(@strRefNumber, 7, 1))) AND Id IN (SELECT Id FROM RefNumbers INNER JOIN SymbolMix ON (MixSymbol = SUBSTRING(RefNumber, 8, 1) AND Symbol = SUBSTRING(@strRefNumber, 8, 1))) AND RefNumber <> @strRefNumber AND Accepted = 1
GO
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.