我有一个API,其中有一个包含UPC-12值的数据库。有时API调用会带着UPC-10代码进入。我的db列是bigint,因此它删除了UPC-12值的前导0。与UPC-10进行比较时,这会将最后一个数字保留为通配符。
我希望能够根据数据库中的记录检查UPC-10值,以查看是否存在匹配。既然我不能使用LIKE,我该怎么做呢?
我们的目标是做一些类似的事情:
def self.pull_product(upc)
upc_string = upc.to_s
if upc_string.length == 10
# product = Product.where... use a wildcard to try and match to existing record
else
product = Product.find_by_upc(upc)
end
end这是Rails 4和Postgresql。
只是想澄清一下:
我可能有一个带有upc参数的upc-10API调用,比如:7618600002。我的数据库有相当于UPC-12的:76186000023。因此,如果我只是在api调用中查询参数,我将得到nil。
我需要一种方法来将UPC-10参数与数据库中的UPC-12值进行匹配。
发布于 2014-12-11 04:54:00
您需要像这样使用SQL:
upc between upc_string::int*10 and upc_string::int*10+9不过,我不知道如何在Rails中编写代码。
https://stackoverflow.com/questions/27407211
复制相似问题