前提・実現したいこと
SQLiteにて特定の条件をもつidをもつ横の行のみ抜き出したいと思っています。
その条件は11桁のidにて、100の位、10の位が特定の値であることです。
これをSequelで実現したいと考えていますが、苦心しています。
ひとまず10の位だけをターゲットにしようと考えていますが、それでも出来ません。
剰余を計算する為に「%」を使おうと思っているのですが、メソッドが定義されていないため使えないとエラーメッセージに出ます。
何か良い方法はないでしょうか。ご教授のほどよろしくお願いします。
発生している問題・エラーメッセージ
エラーメッセージ user@usernoAir ruby % ruby test.rb test.rb:16:in `block in <main>': undefined method `%' for #<Sequel::SQL::Identifier @value=>:id> (NoMethodError) from /Users/user/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/sequel-5.49.0/lib/sequel/core.rb:395:in `instance_exec' from /Users/user/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/sequel-5.49.0/lib/sequel/core.rb:395:in `virtual_row' from /Users/user/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/sequel-5.49.0/lib/sequel/dataset/query.rb:1294:in `filter_expr' from /Users/user/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/sequel-5.49.0/lib/sequel/dataset/query.rb:1273:in `add_filter' from /Users/user/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/sequel-5.49.0/lib/sequel/dataset/query.rb:1048:in `where' from test.rb:16:in `<main>'
該当のソースコード
SQLite
1CREATE TABLE IF NOT EXISTS article( 2 id INTEGER PRIMARY KEY, -- id 一意の値 3 title TEXT NOT NULL, -- 見出し 文字列 4 url TEXT UNIQUE NOT NULL -- URL 文字列 5); 6SELECT * FROM article;
test.rb
Ruby
1require 'date' 2require 'sqlite3' 3require 'sequel' 4 5DB = Sequel.connect('sqlite://article.db') 6 7# 符号11ケタある中で10桁目が1であるものを表示させたい 8puts DB[:article].where{(id % 100) / 10 == 1}.sql.all 9
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [arm64-darwin20]
SQLite version 3.36.0 2021-06-18 18:58:49
sequel (5.49.0)
macOS 12.0.1gn
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/29 13:06
2021/10/29 13:14
2021/10/29 14:23 編集
2021/10/29 14:36
2021/10/29 14:56