偏ったものしか使わないので、これを機に比較演算子についてまとめてみました!
いろいろあって、変なテンションで記事を書いてます (∩^o^)⊃━☆゜.*
前提条件
本を管理するためのデータベースに、以下のデータが登録されてるとします。
1 2 3 4 5 6 7 8 |
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 上での使い方を順番に記載します!
コメントはフィルター結果を記載してますぅ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
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(!) | 否定 |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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 | パターンマッチング |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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]) |
さいごに
まぁ特に目新しいことも少なくって感じですけども!
初心者向けですね ε=(。ノ・ω・)ノ
違うよ!とかこういう方法あるよ!ってのがあれば教えてください。
では( ¯·ω·¯ )
コメント