webForumDet fria alternativet

Konvertera text till tal

ASP

9 svar · 485 visningar · startad av sonta

Medlem sedan maj 200125 inlägg
Frågan#1

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

Medlem sedan juni 200032 967 inlägg
#2

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
Medlem sedan maj 200125 inlägg
#3

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

Medlem sedan juni 200032 967 inlägg
#4

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?

Medlem sedan maj 200125 inlägg
#5

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

Medlem sedan nov. 20017 144 inlägg
#6

Har märkt att även IsNumeric(null) returnerar true av någon anledning. Varför?

Medlem sedan maj 200010 687 inlägg
#7

Du kan skriva:

SQLStmt = "SELECT TOP 1 * FROM svar ORDER BY convert(int, svar_1) DESC"

Lite farligt dock...

Medlem sedan maj 200010 687 inlägg
#8

IsNumeric("1e2") returnerar också true. Det är ett flyttal vilket CLng inte klarar av.

Medlem sedan juni 200032 967 inlägg
#9

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
Medlem sedan juni 2004533 inlägg
#10

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.

268 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)