1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

squirrelのGtOrEqとLtOrEqの使い方メモ

Posted at

今日Goでコード書いてて、データベースから条件検索するときにつまづいたのでメモ。

squirrelライブラリとは

squirrelはGo言語でSQLを組み立てるためのライブラリ。生のSQLを書くよりも型安全に書けるので便利。

import "github.com/Masterminds/squirrel"

色々な比較演算子

Gt - Greater Than (より大きい)

Gtは「Greater Than」の略で、SQLの「>」演算子に相当します。「より大きい」という条件を表します。

// IDが100より大きいレコードを取得
users := squirrel.Select("id", "name").
    From("users").
    Where(squirrel.Gt{
        "id": 100,
    })

GtOrEq - Greater Than or Equal (以上)

GtOrEqは「Greater Than or Equal」の略で、SQLの「>=」のこと。「以上」って意味。

// created_atが7日前以降のデータを取る
users := squirrel.Select("id", "name").
    From("users").
    Where(squirrel.GtOrEq{
        "created_at": time.Now().AddDate(0, 0, -7),
    })

Lt - Less Than (より小さい)

Ltは「Less Than」の略で、SQLの「<」演算子に相当します。「より小さい」という条件を表します。

// 価格が1000円より小さい商品を取得
items := squirrel.Select("id", "name").
    From("items").
    Where(squirrel.Lt{
        "price": 1000,
    })

LtOrEq - Less Than or Equal (以下)

LtOrEqは「Less Than or Equal」の略で、SQLの「<=」のこと。「以下」って意味。

// 値段が1000円以下の商品を取る
items := squirrel.Select("id", "name").
    From("items").
    Where(squirrel.LtOrEq{
        "price": 1000,
    })

複数条件を組み合わせる

両方使って範囲検索みたいなことをやりたいときは、And{}を使って組み合わせる。

// 値段が100円以上500円以下の商品
items := sq.Select("*").
    From("items").
    Where(sq.And{
        sq.GtOrEq{"price": 100},
        sq.LtOrEq{"price": 500},
    })

他の条件と組み合わせることもできる:

// 会社IDが3で、作成日が1週間以内のユーザー
users := squirrel.Select("*").
    From("users").
    Where("company_id = ?", 3).
    Where(squirrel.GtOrEq{
        "created_at": time.Now().AddDate(0, 0, -7),
    })

注意点

  • BETWEENを直接書けない(上の例みたいにAnd{}とGtOrEq/LtOrEqを使うか、Expr()で直接SQLを書く)
  • 値がnilのときはIS NULL/IS NOT NULLになるので注意
  • 配列を渡すとIN句になる

まとめ

squirrelを使うとSQLを安全に書けて便利。GtOrEqとLtOrEqは「以上」「以下」の条件を書くときに使う。複数条件はAnd{}やOr{}で組み合わせる。

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?