嗨,我正在獲取用戶輸入并顯示符合條件的記錄,我的查詢將如下所示
customers = customers.where('customers.contact_num ilike :search', {search: "%#{options[:search_contact]}%"})
在 db 中,聯系號碼存盤在字串中,格式為 (091)-234-5678 就像這樣
在根據聯系號碼搜索用戶時,如果我這樣搜索
091 它正確過濾了數字,但是在像 0912 一樣搜索時,由于大括號,它不顯示記錄,所以如何修改查詢以忽略 ) 和 - 在搜索時.. 作為我的域新手,請幫助我
提前致謝
uj5u.com熱心網友回復:
更改查詢很困難。我們不要那樣做。
相反,正確的快速腳本將您的數字轉換為 1112223333 形式。完全沒有格式。就像是:
require 'set';
phone = "(234)-333-2323"
numbers = Set.new(["1","2","3","4","5","6","7","8","9","0"])
output = phone.chars().select{|n| numbers.include?(n)}.join("")
puts output
=> "2343332323"
然后撰寫一個小函式將它們轉換為顯示形式以在視圖中使用。
這將使您的查詢按原樣作業。
uj5u.com熱心網友回復:
如何使用REGEXP_REPLACE從搜索中洗掉所有非數字字符 - 如下所示?
customers = customers.where("REGEXP_REPLACE(customers.contact_num,'[^[:digit:]]','','g') ilike :search", {search: "%#{options[:search_contact]}%"})
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/370156.html
標籤:红宝石轨道
