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模式畢竟只是一個字符串。 –
感謝您的解釋..很多向您學習,但路徑是未知的.. –