Varför ska du konvertera till tal i SQL-frågan? Det låter farligt. Jag skulle gjort det i ASP-koden:
if IsNumeric(objRS("svar_1") then
lngSvar1 = CLng(objRS("svar_1"))
end if
9 svar · 485 visningar · startad av sonta
Hejsan,
Hur ställer man en SQL-fråga där man vill konvertera text till tal.
Kolumnen "svar_1" har datatypen text.
SQLStmt = "SELECT TOP 1 * FROM svar ORDER BY svar_1 DESC"
Kanske...
SQLStmt = "SELECT TOP 1 *, convert(svar_1, number) FROM svar ORDER BY svar_1 DESC" ???
OBS! Beroende på vilken fråga det är så kan svar_1 innehålla text eller tal. Så jag kan inte ändra datatyp.
/Pelle
Varför ska du konvertera till tal i SQL-frågan? Det låter farligt. Jag skulle gjort det i ASP-koden:
if IsNumeric(objRS("svar_1") then
lngSvar1 = CLng(objRS("svar_1"))
end if
Njaa.. det fungerar inte.
Jag får inte ut det största värdet.
Hämtar jag alla värden(svar_1) så blir det så här:
1
29
330
4
5
69
/Pelle
Ok, det är så du menar.
Det är ett problem att du sparar både strängar of numeriska tal i samma fält. Vad använder du för databas?
MSSQL
Det är en fråge-databas där svar_1, svar_2 osv kan vara olika från fråga till fråga.
För varje fråga sätter jag vilken datatyp varje svar har.
/Pelle
Har märkt att även IsNumeric(null) returnerar true av någon anledning. Varför?
Du kan skriva:
SQLStmt = "SELECT TOP 1 * FROM svar ORDER BY convert(int, svar_1) DESC"
Lite farligt dock...
IsNumeric("1e2") returnerar också true. Det är ett flyttal vilket CLng inte klarar av.
Denna SQL-fråga borde kanske kunna funka, men jag är lite morgontrött i dag.
SELECT TOP 1 * FROM svar ORDER BY ISNUMERIC(svar_1) DESC, CASE WHEN ISNUMERIC(svar_1) = 1 THEN CAST(svar_1 AS Integer) ELSE svar_1 END DESC
Jesper T skrev:
Har märkt att även IsNumeric(null) returnerar true av någon anledning. Varför?
Därför att null går att konvertera till ett tal.