16. december 2008 - 17:10Der er
6 kommentarer og 1 løsning
Maks integer i varchar-felt
Hej Med min noget kryptiske titel menes der at jeg skal have fundet to (maks)-felter fra et syndigt rod af forskellige datatyper i en varchar(50)-datafelt. Eksempler på data.
Således ser feltet desværre ud. Jeg ønsker at finde to tal gerne i samme forespørgsel, men ikke strengt nødvendigt. 1) den maksimale integerværdi. Som her er: 103239 2) den maksimale Vxxxx-værdi. Som her er: V000488
Hvis det kan hjælpe er det det sidst ankomne tal af henholdsvis 1) og 2) som ønskes.
Har prøvet at konvertere og alt muligt, men uden held, så derfor søger jeg hjælp hos jer Eksperter ;)
Jeg får en fejl på dit sql-forslag: SELECT MAX(CASE WHEN PATINDEX('[^0-9]', PackageID) = 0 THEN CAST(PackageID AS INTEGER) ELSE -1) FROM PartReturns
Msg 170, Level 15, State 1, Line 5 Line 5: Incorrect syntax near ')'.
Jeg havde egentlig ikke tænkt over at hive tallene ind og ordne sorteringen i appl. Er det designmæssigt/ydelsesmæssigt det "rigtige", eller...?
Tabellen er temmelig stor (114.000 rækker)
Måske skulle jeg nedtage de første 100 (så er sandsynligheden stor for at der fåes fat i begge typer packageID'er. Ville det være en løsning?
Nedenstående giver mig det rigtige nummer for Vxxxx SELECT TOP 1 PackageID FROM PartReturns WHERE PackageID LIKE 'V%'
Nu mangler jeg bare for det største TAL, men måske din sql kan løse dette., eller jeg skal hente de 100 første (jvnfør dit forslag om at få tallet frem i applikationen): SELECT TOP 100 PackageID FROM PartReturns ORDER BY DateTimeStamp DESC
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.