これはしばらく私を悩ませています...私はユーザーのテーブルを照会し、名前に二重スペースを持つものを見つける必要があります。Rails ActiveRecordを使用したMySQL REGEXP
User.pluck(:full_name).select {|n| n =~ /([[:alpha:]]*)[[:space:]]{2}/ }
OR
:SELECT 'first last' REGEXP '[[:space:]]{2}';
は、私もそれがルビーREGEXを使用して、レールから動作させることができます。 私は、最も簡単かつより簡潔ビーイングDBに対して直接動作するSQLクエリの複数のバージョンを持っています
User.pluck(:full_name).select {|n| n =~ /\w+\s{2}/ }
私はいくつかの点でARを使用しようとしていましたが、私は何が欠けているのか分かりません。たぶん私は何かをエスケープする必要があります... 私は数回をお読みください。 http://dev.mysql.com/doc/refman/5.0/en/regexp.html
それは問題があなたの正規表現ではなくではありません
2] pry(main)> User.where("'full_name' REGEXP ?", "[[:alpha:]]*[[:space:]]{2}").count
=> 0
[3] pry(main)> User.where("'full_name' REGEXP ?", '[[:alpha:]]*[[:space:]]{2}').count
=> 0
[4] pry(main)> User.where("'full_name' REGEXP ?", '[[:alpha:]]*[[:space:]]{2}').to_sql
=> "SELECT `users`.* FROM `users` WHERE ('full_name' REGEXP '[[:alpha:]]*[[:space:]]{2}')"
[5] pry(main)> User.where("'full_name' REGEXP ?", '[[:space:]]{2}')
=> []
[6] pry(main)> User.where("'full_name' REGEXP ?", '[[:blank:]]{2}')
=> []
[7] pry(main)> User.where("'full_name' RLIKE ?", '[[:blank:]]{2}')
=> []
[8] pry(main)> User.where("'full_name' RLIKE ?", '[[:blank:]]{2}').to_sql
=> "SELECT `users`.* FROM `users` WHERE ('full_name' RLIKE '[[:blank:]]{2}')"
[9] pry(main)> User.where("'full_name' RLIKE ?", '[[:blank:]]').count
=> 0
[10] pry(main)> User.where("'full_name' RLIKE ?", '[[:space:]]').count
=> 0
[11] pry(main)> User.where("'full_name' RLIKE ?", '.*[[:space:]].*').count
=> 0
[12] pry(main)> User.where("'full_name' RLIKE ?", '\[[:space:]\]').count
=> 0
私は最も簡単だと思います: 'SELECT 'first last' LIKE '%%''。 –
残念ながらそれは動作しません.... [17] pry(main)> User.where( "'full_name' LIKE? '、' %% ')。count => 0 – superuseroi