开发者社区> 问答> 正文

如果使用sqlserver驱动程序,则映射对现有键返回0

只要使用sqlite3驱动程序,我就可以正常使用此代码。当我以某种方式切换到sqlserver时,显然包含值的映射为每个键返回0。

log.Println(current) for abbr, rate := range fetched.Quotes { abbr = abbr[3:len(abbr)] log.Println(abbr, current[abbr]) if c, ok := current[abbr]; ok { // programm does not reach this with sqlsever driver
} } 我添加了这些日志语句进行测试。

展开
收起
心有灵_夕 2019-12-25 21:42:16 781 0
1 条回答
写回答
取消 提交回答
  • 评论中所述,sqlserver版本Abbreviation 使用大量空格检索,而在sqlite版本中,abbr字符串不包含空格。空格似乎是由sqlserver如何实现列的类型引起的。

    因此,您要么必须更改列类型,以使它们彼此之间更加兼容,要么就可以对扫描的Abbr字符串进行“规范化”以确保无论RDBMS如何,始终以相同的方式设置其格式。

    例如:

    fx[strings.TrimSpace(abbr)] = rate
    
    2019-12-25 21:42:37
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载