我正在尝试从Microsoft SQL数据库中提取zipcodes,并且一切都适用于美国邮政编码,但是一旦我开始使用加拿大邮政编码,我收到以下消息:
转换varchar值时,转换失败' L0S1J0&#39>数据类型int。
我知道L0S1J0不是整数,但我不明白为什么Excel VBA想要将数据拉为整数。我尝试用int以外的方式搜索数据,但我对正确的关键字没有任何好运。我尝试过像Cast和Convert这样的东西,但除了从数据库中删除加拿大邮政编码外,我无法得到任何工作。
以下是我当前正在运行的查询,Zip代码存储在LookupID字段下。
Select Distance1, Distance2, LookupID FROM excel.dbo.miles WHERE LookupID =" & Worksheets("sheet1").Range("C2").Value
非常感谢任何帮助!
答案 0 :(得分:4)
您的问题出在您的where子句中。改为:
WHERE LookupID ='" & Worksheets("sheet1").Range("C2").Value & "'"
你需要在字符串文字周围添加单引号。
您应该考虑执行参数化查询以防止SQL注入问题。例如,使用ADO使用CreateParameter方法。