我有一个简单的Sqlite表,其中有2列用于电话号码和计数器。我想在包含电话号码和计数器的.csv文件的基础上更新表格。如果该数字存在于数据库中,则应该使用文件中现有计数器+计数器的总和进行更新。如果不存在,则应使用文件中的值插入新记录。 我剩下的一个问题是电话号码在第一位置有一个零。 当我填充数据库零保留,(我可以手动选择并找到一个现有的数字,如09999)时,我从文件保留零值,但当我尝试插入/更新的东西发生在我的Ruby代码中的值插入一个没有前导零的新记录,所以0999在db中变为999。没有前导零的数字被正确处理。 我的代码如下所示:用Ruby在Sqlite中插入/更新数字字符串(新手查询)
rowArray=thisFile[k].split(';')
number = rowArray[0]
couplings = rowArray[1]
updString="INSERT OR REPLACE INTO Caller (Telno,count) VALUES (#{number},COALESCE((SELECT count + #{couplings} FROM Caller WHERE Telno=#{number}),# {couplings}))"
db.execute(updString)
任何想法,我做错了什么?最简单的解决方案是放弃前导零,但我宁愿做正确的。提前谢谢了。
感谢鲍罗丁,修复它,现在我明白了机制。 – user2630253