web-dev-qa-db-ja.com

大文字小文字を区別しない方法でMySQL JSON配列内を検索することは可能ですか?

例えばテーブルと:

create table test (id int primary key, tags json);
insert into test (id, tags) values (1, '["Lorem ipsum", "dolor", "sit"]'), (2, '["foo", "bar"]');

これは一致します:

select id from test where json_search(tags, 'one', 'Lorem%') is not null

しかし、これはしません:

select id from test where json_search(tags, 'one', 'lorem%') is not null

理想的には、両方のケースを照合できるようにしたいと思います。

5.7.16 Percona XtraDBクラスターでの実行

2
Moby Duck

その他の場合、データを変更できず、適切な結果が必要な場合:

select 
    id 
from test 
where json_search(UPPER(tags), 'one', UPPER('lorem%')) is not null

もちろん遅くなるので、実際のデータサイズでテストする必要があります

2
a_vlad

これは、テーブルまたはフィールドで使用される照合が原因である可能性があります。大文字と小文字が区別される場合、「L」は「l」と一致しません。照合を知るために、これを実行してください:

SHOW CREATE TABLE test

大文字と小文字を区別しない照合順序名は、「_ ci」で終わります。 照合の詳細については、ここをクリックしてください

0
Jehad Keriaki