Karuta’s ASP & M$ SQLserver

Dicas, códigos e outras coisinhas de meus estudos para não esquecer…

Archive for julho \31\UTC 2014

DIVISÃO NO SQL – MAIS DIGITOS APÓS A VIRGULA

Posted by karuta em julho 31, 2014

select 0.59 / 350 as resultado1
select CAST(0.59 as float) / CAST(350 as float) as resultado2

resultado1
—————————————
0.001685

(1 row(s) affected)

resultado2
———————-
0,00168571428571429

(1 row(s) affected)

Anúncios

Posted in sql server | Leave a Comment »

Envio dados SQL SERVER – ASP – ADO – adLongVarChar

Posted by karuta em julho 30, 2014

[Microsoft][ODBC SQL Server Driver]String data, right truncation

http://www.w3schools.com/asp/ado_datatypes.asp

varchar(MAX) can be used from ADO as an input parameter. The data type in this case would be adLongVarChar

Se acontecer problemas no tamanho do texto que você precisa enviar para o banco de dados, use o parametro: 201 = adLongVarChar

 

rsInserirRoyalty_cmd.Parameters.Append rsInserirRoyalty_cmd.CreateParameter(“param3”, 201, 1, -1, v0)

Posted in asp, sql server | Leave a Comment »

Round() – Arredondar ou truncar os decimais?

Posted by karuta em julho 18, 2014

Exemplo:

original = 2,4567
arredondado = 2,46  - ROUND(2,4567,2)
truncado    = 2,45  - ROUND(2,4567,2,1)

– Sintaxe


ROUND (numeric_expression , length [ ,function ] )

 

– Argumentos


numeric_expression

É uma expressão da categoria de tipo de dados numéricos exatos ou aproximados, com exceção do tipo de dados bit. 

length 
É a precisão à qual a numeric_expression deve ser arredondada. length deve ser uma expressão do tipo tinyint, smallint ou int. Quando length for um número positivo, numeric_expression é arredondada para o número de posições decimais especificado por length. Quando length for um número negativo, numeric_expression é arredondada no lado esquerdo do ponto decimal, conforme especificado por length. 

function 
É o tipo de operação a ser executada. function deve ser tinyint, smallintou int. Quando function é omitido ou tem um valor 0 (padrão), a numeric_expression é arredondada. Quando um valor diferente de 0 é especificado, numeric_expression é truncado.

Posted in Sem categoria | Leave a Comment »

SQL SERVER IF ISNUMERIC

Posted by karuta em julho 10, 2014

There is no boolean in SQL Server. This means you can’t just say IF (expression); you must compare it to something, because it does return true or false in the same sense as you’re probably used to in other languages.

Just a preference, but I would prefer to write it this way:

IF ISNUMERIC('5675754674') = 1
 BEGIN
 ...
 END

There is no way in SQL Server to avoid the comparison to 1, as in your second example.

Also as an aside you should be aware of the weaknesses of ISNUMERIC() – it can give false positives for “numeric” values such as ., CHAR(9), e, $ and a host of other non-numeric strings. If you want to know if something is an integer, for example, better to say:

IF '5675754674' NOT LIKE '%[^0-9]%'
 BEGIN
 ...
 END

But even that is not a complete and valid test because it will return true for values > (2^32)-1 and it will return false for negative values.

Another downside to ISNUMERIC() is that it will return true if the value can be converted to any of the numeric types, which is not the same as all numeric types. Often people test for ISNUMERIC() and then try to cast a FLOAT to a SMALLINT and the conversion fails.

In SQL Server 2012 you will have a new method called TRY_CONVERT() which returns NULL if the conversion to the specified data type is not valid.

tks Aaron Bertrand (credit)

Posted in sql server | Leave a Comment »