将Varchar从变量字符串转换为Float并插入SQL Server?

我是SQL Server新手。 我创建了一个脚本,我导入数据并插入SQL Server。 更新查询工作正常但插入查询不正常。 我收到错误</ p>


将数据类型varchar转换为float时出错。插入到dbo。</ p>
</ blockquote>

这是代码</ p>

  $ amount = trim(str_replace('$','',$ data [2])); 
// echo($ amount); //打印1,000,000.00

// INSERT QUERY
//尝试1:失败

$ Query =“INSERT INTO dbo.testtable(id,name,amount)
values(11,'John', $ amount)“;

//尝试2:失败

$ Query =”INSERT INTO dbo.testtable(id,name,amount)
values(11,'John',CONVERT(FLOAT,' $ amount'))“;
</ code> </ pre>

如何在世界中从变量( $ amount </ code>)中插入适当的浮点值到 SQL Server?</ p>
</ div>

展开原文

原文

I am new to SQL Server. I have created a script where I import data and insert into SQL Server. The update query works fine but the insert query does not . I get a error

Error converting data type varchar to float.. INSERT INTO dbo.

This is the code

 $amount = trim(str_replace('$','',$data[2]));
// echo ($amount); // prints 1,000,000.00

// INSERT QUERY
//Try 1 : Fails

  $Query  = "INSERT INTO dbo.testtable (id, name, amount) 
                                values ( 11, 'John' , $amount )";

  //Try 2 : Fails

  $Query  = "INSERT INTO dbo.testtable (id, name, amount) 
                                values ( 11, 'John' ,  CONVERT(FLOAT,'$amount') )";

How in the world can I insert a proper float value from the variable ($amount) into SQL Server?

douliao8760
douliao8760 使用此函数删除,函数Getfloat($str){if(strstr($str,“,”)){$str=str_replace(“。”,“”,$str);//用blancs替换点(千seps)$str=str_replace(“,”,“。”,$str);//用。。。来代替'。'}if(preg_match(“#([0-9\。]+)#”,$str,$match)){//搜索可能包含'。'的数字。returnfloatval($match[0]);}else{returnfloatval($str);//使用floatval获取最后一次机会}}只返回1。
大约 6 年之前 回复
douyouyi8878
douyouyi8878 我有阅读的神奇力量;-)
大约 6 年之前 回复
dtxpz8785
dtxpz8785 很好的抓住了。
大约 6 年之前 回复
dtp19819
dtp19819 确切地说,它有昏迷
大约 6 年之前 回复
dptiq46022
dptiq46022 哦,我现在明白你的意思了
大约 6 年之前 回复
duanpai9945
duanpai9945 “echo($amount);//打印1,000,000.00”我看到2个逗号
大约 6 年之前 回复
duanjian7617
duanjian7617 没有逗号,你的意思是单引号?我做了但没有改变。仍然错误:CONVERT(FLOAT,$amount)->[Microsoft][SQLServerNativeClient10.0][SQLServer]','附近的语法不正确..
大约 6 年之前 回复
doujuanqi2909
doujuanqi2909 你需要从$amount中删除逗号
大约 6 年之前 回复

1个回答



使用此:</ p>

  cast('$ amount'作为钱)
</ code> </ pre>

更新:
实际上取决于列 amount </ code>的类型。 如果它是varchar,它不应该为第一行引发错误。 所以,我想这就像 decimal(18,2)</ code>。 请参阅演示此处 </ p>

  声明@amount varchar(25)
SET @amount ='1,000.00'

创建表#tmp_money(金额FLOAT)
insert到#tmp_money
SELECT cast(@amount as money)

select * from #tmp_money
</ code> </ pre>
</ div>

展开原文

原文

use this:

cast('$amount' as money)

Updates: It actually depends on what's the type of your column amount. If it's varchar, it should not throw an error for 1st line. So, I guess it's something like decimal(18, 2). Refer to the demo here

declare @amount varchar(25)
SET @amount = '1,000.00'

create table #tmp_money (amount FLOAT)
insert into #tmp_money
SELECT cast(@amount as money)

select * from #tmp_money 

dongwo8827523
dongwo8827523 它也应该有效。 但10000.42222将被截断为10000.4222。
大约 6 年之前 回复
douwen3973
douwen3973 它工作..它正在插入。 谢谢。 这还会照顾小数吗? 我的意思是假设金额是10000.42? 这会有用吗?
大约 6 年之前 回复
douzhi7070
douzhi7070 您可以仔细检查DB以查看它是否已插入。
大约 6 年之前 回复
dongnanbi4942
dongnanbi4942 我没有得到错误,但当我回应查询时,我得到这个值为---> cast('1,000,000.00'作为钱),
大约 6 年之前 回复
dqpd4268
dqpd4268 哎呀,错字。 它应该是CAST('$ amount'作为钱)。
大约 6 年之前 回复
duanchuaiwan0063
duanchuaiwan0063 [Microsoft] [SQL Server Native Client 10.0] [SQL Server]必须声明标量变量“@amount”.. INSERT INTO dbo。
大约 6 年之前 回复
dongyong3223
dongyong3223 不,只需更改CONVERT(FLOAT,'$ amount')即可(@amount as money)。 我上面发布的链接用于测试目的,以演示为什么我的建议有效。
大约 6 年之前 回复
dqx76962
dqx76962 我不知道你在哪里要求我宣布@amount varchar(25)? 在PHP代码?
大约 6 年之前 回复
doushuo1989
doushuo1989 我认为我的回答适用于FLOAT。 您可以查看上面的演示链接。
大约 6 年之前 回复
doupuchen6378
doupuchen6378 它的类型为float in db
大约 6 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问