

Go言語のgormというORMでpostgreSQLのLIKE文を使用しましたが、なぜかデータがとれません。

モデルは以下のものを想定します。

[code]

    type Model struct{
        ID int
        Name string     
        Phonetic string //Nameのひらがな
    }
    
[/code]

ここでPhoneticがあ行で始まるものを取得したいので、下記のSQLを発行します。  
`db.Where("phonetic LIKE ?", "[あ-お|ぁ-ぉ]%").Find(&models)`

しかし、データ内にPhoneticがあ行で始まるもの(例えば｢おーろら｣など)があるのですが、取得できません。どのようなSQLを発行すれば取れるのでしょうか。


CC BY-SA 3.0
2015-09-06T07:22:50.770
16302
2022-08-20T17:05:24.343
2015-09-06T07:47:29.440
7232
7232
question
go sql postgresql gorm
曖昧検索のLIKE文にヒットしない


`LIKE` 演算子が行うのはとても単純なパターンマッチであり、正規表現によるマッチではありません:
<https://www.postgresql.org/docs/current/functions-matching.html>

PostgreSQL では `~` 演算子で正規表現を使ったマッチができるので、これを利用することは一応できます。`phonetic ~
'^[あ-お|ぁ-ぉ]'` といった感じです。

ただし正規表現を使ったマッチはインデックスを利用しづらいなどのデメリットがあり、レコード数が多くなるとクエリ実行に時間がかかりがちです。実行時間で困る場合、1
文字目しか利用しないのであればそのためのカラムを作るとか、色々な検索パターンがありえるのであれば全文検索エンジンの利用を検討するとかが考えられます。


CC BY-SA 4.0
2022-08-20T17:05:24.343
90655
2022-08-20T17:05:24.343
19110
16302
answer