偏ったものしか使わないので、これを機に比較演算子についてまとめてみました!
いろいろあって、変なテンションで記事を書いてます (∩^o^)⊃━☆゜.*
前提条件
本を管理するためのデータベースに、以下のデータが登録されてるとします。
let realm = try! Realm()
try! realm.write {
realm.add([Book(value: ["name": "絶対に挫折しないiPhoneアプリ開発「超」入門", "price": 3000]),
Book(value: ["name": "Swift実践入門", "price": 3500]),
Book(value: ["name": "ゼロから始める超入門 はじめてのプログラミング", "price": 1700]),
Book(value: ["name": "詳細! Swift iPhoneアプリ開発入門ノート", "price": 3500]),
Book(value: ["name": "たった2日でマスターするiPhoneアプリ開発集中講座", "price": 2700])])
}
このデータベースを使って演算子の使い方をまとめますぅ
演算子まとめ
比較演算子
| 演算子 | 意味 |
| ==(=) | 左辺値と右辺値は等しい |
| !=(<>) | 左辺値と右辺値は等しくない |
| > | 左辺値は右辺値を超過 |
| >=(=>) | 左辺値は右辺値以上 |
| < | 左辺値は右辺値未満 |
| <=(=<) | 左辺値は右辺値以下 |
| BETWEEN | 左辺値は右辺値の範囲内 |
こんなもんですかね。
個人的にいつも != を使っていて、<> は知りませんでした…w
次に Realm 上での使い方を順番に記載します!
コメントはフィルター結果を記載してますぅ
let realm = try! Realm()
let results = realm.objects(Book.self)
results.filter("price == 3000")
// Book(value: ["name": "絶対に挫折しないiPhoneアプリ開発「超」入門", "price": 3000])
results.filter("price != 3000")
// Book(value: ["name": "Swift実践入門", "price": 3500])
// Book(value: ["name": "ゼロから始める超入門 はじめてのプログラミング", "price": 1700])
// Book(value: ["name": "詳細! Swift iPhoneアプリ開発入門ノート", "price": 3500])
// Book(value: ["name": "たった2日でマスターするiPhoneアプリ開発集中講座", "price": 2700])
results.filter("price > 3000")
// Book(value: ["name": "Swift実践入門", "price": 3500])
// Book(value: ["name": "詳細! Swift iPhoneアプリ開発入門ノート", "price": 3500])
results.filter("price >= 3000")
// Book(value: ["name": "絶対に挫折しないiPhoneアプリ開発「超」入門", "price": 3000])
// Book(value: ["name": "Swift実践入門", "price": 3500]),
// Book(value: ["name": "詳細! Swift iPhoneアプリ開発入門ノート", "price": 3500])
results.filter("price < 3000")
// Book(value: ["name": "ゼロから始める超入門 はじめてのプログラミング", "price": 1700])
// Book(value: ["name": "たった2日でマスターするiPhoneアプリ開発集中講座", "price": 2700])
results.filter("price <= 3000")
// Book(value: ["name": "絶対に挫折しないiPhoneアプリ開発「超」入門", "price": 3000])
// Book(value: ["name": "ゼロから始める超入門 はじめてのプログラミング", "price": 1700])
// Book(value: ["name": "たった2日でマスターするiPhoneアプリ開発集中講座", "price": 2700])
results.filter("price BETWEEN {3000, 4000}")
// Book(value: ["name": "絶対に挫折しないiPhoneアプリ開発「超」入門", "price": 3000])
// Book(value: ["name": "Swift実践入門", "price": 3500])
// Book(value: ["name": "詳細! Swift iPhoneアプリ開発入門ノート", "price": 3500])
論理演算子
| 演算子 | 意味 |
| AND(&&) | 論理積 |
| OR(||) | 論理和 |
| NOT(!) | 否定 |
let realm = try! Realm()
let results = realm.objects(Book.self)
results.filter("price == 3500 AND name == 'Swift実践入門'")
// Book(value: ["name": "Swift実践入門", "price": 3500])
results.filter("price == 3500 OR name == 'Swift実践入門'")
// Book(value: ["name": "Swift実践入門", "price": 3500])
// Book(value: ["name": "詳細! Swift iPhoneアプリ開発入門ノート", "price": 3500])
results.filter("!(price == 3500)")
// Book(value: ["name": "絶対に挫折しないiPhoneアプリ開発「超」入門", "price": 3000])
// Book(value: ["name": "ゼロから始める超入門 はじめてのプログラミング", "price": 1700])
// Book(value: ["name": "たった2日でマスターするiPhoneアプリ開発集中講座", "price": 2700])
文字列の比較演算子
| 演算子 | 意味 |
| BEGINSWITH | 前方一致 |
| ENDSWITH | 後方一致 |
| CONTAINS | 部分一致 |
| LIKE | パターンマッチング |
let realm = try! Realm()
let results = realm.objects(Book.self)
results.filter("name BEGINSWITH 'Swi'")
// Book(value: ["name": "Swift実践入門", "price": 3500])
results.filter("name ENDSWITH 'ミング'")
// Book(value: ["name": "ゼロから始める超入門 はじめてのプログラミング", "price": 1700]),
results.filter("name CONTAINS 'Swi'")
// Book(value: ["name": "Swift実践入門", "price": 3500])
// Book(value: ["name": "詳細! Swift iPhoneアプリ開発入門ノート", "price": 3500])
results.filter("name LIKE '?発'") // ?は任意1文字
// Book(value: ["name": "絶対に挫折しないiPhoneアプリ開発「超」入門", "price": 3000])
// Book(value: ["name": "詳細! Swift iPhoneアプリ開発入門ノート", "price": 3500])
// Book(value: ["name": "たった2日でマスターするiPhoneアプリ開発集中講座", "price": 2700])
さいごに
まぁ特に目新しいことも少なくって感じですけども!
初心者向けですね ε=(。ノ・ω・)ノ
違うよ!とかこういう方法あるよ!ってのがあれば教えてください。
では( ¯·ω·¯ )



コメント