Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Gente olha que coisa doida, alguém consegue explicar:
Tenho este select
SELECT COUNT(*) AS Total FROM palavras_chaves WHERE id = '" & Session("idLogin") & "'
Se eu der um Response.Write na tela ele imprime 2
Agora se eu fizer uma condição If assim
Rstotal("Total") >= "15"
Response.Write "Maior ou igual a 15"
Else
Response.Write "Menor que 15"
End If
Ele esta retornando com sendo maior ou igual a 15, agora alguém consegue explicar o porque ele faz isto? Uma vez que 2 é menor que 15
Bom dia Mario, sim entendi, você esta querendo falar a diferença entre inteiro e string isto?
O valor ali vem como string, vou converter para inteiro para ver o que acontece.
Agora me tira uma duvida, porque 2 como string é maior que 15 como string e 2 como inteiro é menor que 15 como inteiro?
dependendo da situação é melhor usar um contatdor normal ou a clausula count do SQL, pois se o seu bd for muito grande o recordcount do objeto recordset para apresentar queda de desempenho e para usar o RecordCount , seu cursortype tem que ser recordset.CursorType = 3 (AdOpenDynamic)
exemplo:
<%
DIM mySQL, objRS
mySQL = "SELECT * FROM myTable"
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open mySQL, objConn
DIM iRecordCount
iRecordCount = 0
DO WHILE NOT objRS.EOF
iRecordCount = iRecordCount + 1
objRS.MoveNext
Loop
Response.Write "(" & iRecordCount & ")"
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
%>
SQL COUNT
<!--#INCLUDE VIRTUAL="/includes/connection.asp" -->
<%
DIM mySQL, objRS
mySQL = "SELECT Count(*) AS intTotal FROM myTable"
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open recSQL, objConn
' Display result
Response.Write objRS("intTotal")
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
%>
Normalmente utilizo o Count do SQL mesmo, só uso RecordCount em casos que não tem como utilizar o pelo SQL.
Mas usando o Cint para transformar em Inteiro deu certo, na verdade já tinha testado com o Cint só queri saber o porque que uma string "2" é considerada maior que uma string "15"
por que para ordenar como string sempre é levado em conta o primeiro caracter apenas se for igual passamos para o proximo
assim então o "2" será maior que qualquer texto iniciado por "1"
qualquer mesmo
"12222222222222222222222222222222222222222222222222222222222222222222222222"
"1bhjfgdsgfskjfhksdfhskjdhkj"
Entendeu?
Entendi, não sabia disto, vivendo e aprendendo. Obrigado
bom que resolveu
"2" é maior que "15" mas 2 é menor que 15
Entendeu?
Tira as aspas para ele entender como numero em vez de texto