0
我想用一个通配符或正则表达式给用户输入提供一些方便,用Ruby编写的简单的图书馆目录程序从数据库检索信息。通过Ruby的SQL通配符
有问题的代码(其当前工作是否有精确匹配):
puts "Enter the title of the book"
title = gets.chomp
book = $db.execute("SELECT * FROM books WHERE title LIKE ?", title).first
puts %Q{Title:#{book['title']}
Author:#{book['auth_first']} #{book['auth_last']}
Country:#{book['country']}}
我使用SQLite 3.在SQLite的终端我可以输入:
SELECT * FROM books WHERE title LIKE 'Moby%'
或
SELECT * FROM books WHERE title LIKE "Moby%"
并得到(假设有一个正确的入口):
Title: Moby-Dick
Author: Herman Melville
Country: USA
我找不到任何相应的方式在我的Ruby程序中这样做。
在此上下文中是否无法使用SQL %
通配符?如果是这样,我需要在这里使用Ruby正则表达式吗?处理这个问题的好方法是什么?
(即使投入单引号?
('?'
)将导致其在程序不再工作。)
任何帮助是极大的赞赏。
(注:我基本上只是试图从第9章修改开始红宝石(彼得·库珀)示例代码)
你最后的做法对我来说是新事物。我从来没有想过我们可以按照你所显示的方式来写... –
@ArupRakshit:'||'是标准的SQL字符串连接运算符。有些数据库让你使用'+',有些使你使用'concat'函数,但它们都在标准化(即使MySQL打开了“注意标准SQL!其配置)。一个LIKE模式毕竟只是一个字符串。 –
感谢您的解释..很多向您学习,但路径是未知的.. –