如何在 SQL 或 JPA 中组合 LIKE + IN
How to combinate LIKE + IN in SQL or JPA
例如我有这个字符串:
Tesla is good car
Tesla is electric car
Opel is budget auto
并通过文字:opel,tesla 我想 select 所有这些字符串。
SIMILAR TO
可以
CREATE TABLE tab1 (
"id" INTEGER,
"mytext" VARCHAR(21)
);
INSERT INTO tab1
("id", "mytext")
VALUES
('1', 'Tesla is good car'),
('2', 'Tesla is electric car'),
('4', 'Opel is budget auto');
SELECT * from tab1 WHERE mytext SIMILAR TO '(Opel|Tesla|VW)%';
id | mytext
-: | :--------------------
1 | Tesla is good car
2 | Tesla is electric car
4 | Opel is budget auto
db<>fiddle here
如果你只有两个字符串 'Opel' 和 'Tesla',你不能只使用这个吗?
假设您的所有数据看起来都与您在 post 中表示的方式相同:
SELECT *
FROM your_table
WHERE your_field LIKE 'Tesla%'
OR your_field LIKE 'Opel%'
为了能够有效地使用索引,查询如下:
SELECT ...
FROM tab
WHERE col LIKE ANY ('Tesla%', 'Opel%');
例如我有这个字符串:
Tesla is good car
Tesla is electric car
Opel is budget auto
并通过文字:opel,tesla 我想 select 所有这些字符串。
SIMILAR TO
可以
CREATE TABLE tab1 ( "id" INTEGER, "mytext" VARCHAR(21) ); INSERT INTO tab1 ("id", "mytext") VALUES ('1', 'Tesla is good car'), ('2', 'Tesla is electric car'), ('4', 'Opel is budget auto');
SELECT * from tab1 WHERE mytext SIMILAR TO '(Opel|Tesla|VW)%';
id | mytext -: | :-------------------- 1 | Tesla is good car 2 | Tesla is electric car 4 | Opel is budget auto
db<>fiddle here
如果你只有两个字符串 'Opel' 和 'Tesla',你不能只使用这个吗?
假设您的所有数据看起来都与您在 post 中表示的方式相同:
SELECT *
FROM your_table
WHERE your_field LIKE 'Tesla%'
OR your_field LIKE 'Opel%'
为了能够有效地使用索引,查询如下:
SELECT ...
FROM tab
WHERE col LIKE ANY ('Tesla%', 'Opel%');