【问题标题】:comparing strings of digits with zeros padding将数字字符串与零填充进行比较
【发布时间】:2017-02-03 11:34:51
【问题描述】:

我在使用 rails csv 模块 require 'csv' 导入字符串时遇到问题,数字用零填充。

以下两个查询给出不同的结果。首先是考虑二进制模式的输入,
第二个是影响正确的查询。

Client.where('original_identifier = ?', 00002000.to_s).first
 SELECT  "clients".* FROM "clients" WHERE (original_identifier = '1024')

Client.where('original_identifier = ?', "00002000").first
 SELECT  "clients".* FROM "clients" WHERE (original_identifier = '00002000')

Client.where('original_identifier = ?', "00001999").first

返回一个 irb 错误Invalid octal digit

但是,对于 CSV 模块

@client = Client.where('original_identifier = ?', row[1].to_s).first

当我预期行为与第二种情况相同时,只生成空结果。

那么正确的 ruby​​ 语法是什么?

【问题讨论】:

  • 什么是cdv模块?
  • 为什么是二进制?什么意思?
  • 你有关于00002000的问题吗?二进制文件怎么会有2这个字符?
  • (这里是因为他和我同名)
  • @sawa 错字。 .csv 模块。无论 ruby​​ 在做什么,它都假设在第一种情况下它正在处理一个八进制数字。 [désolé à l'autre moi...]

标签: ruby csv


【解决方案1】:

首先传递给整数,然后传递给字符串以匹配搜索数据类型

@client = Client.where('original_identifier = ?', row[1].to_i.to_s).first

是一个解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-17
    相关资源
    最近更新 更多