Manufacturer
==========================
id name
--------------------------
1 Company Inc.
2 Google Test.
3 3M (UNITY) USA. INC.
4 CE EE
比如说,我有一个字符串'Google Test. 1257 SCS RANDOM 31233DD'我想在表中找到所有行,manufacturer
其中 htname
是给定字符串的一部分:
SELECT * FROM manufacturer
WHERE 'Google Test. 1257 SCS RANDOM 31233DD' ILIKE '%' || name || '%'
正确返回:
id name
--------------------------
2 Google Test.
但是当我这样做时:
SELECT * FROM manufacturer
WHERE '3dad QTICE EEN ' ILIKE '%' || name || '%'
它返回:
id name
--------------------------
4 CE EE
我不想要这样的部分匹配。单词中间name
不匹配。我试过substring()
:
SELECT * from manufacturer
WHERE SUBSTRING('Google Test. 1257 SCS RANDOM 31233DD' from name) != '';
但我得到:
ERROR: invalid regular expression: quantifier operand invalid
不幸的是,我没有确切的规范,因为我正在从外部数据库查询这个。但据我所见,列是varchar(256)
. 所有值都大写并使用纯空格。全部以字符或数字开头,以数字、字符或特殊字符结尾。例如:“克利夫兰钻头(绿色)”。值中有特殊字符,如,.()&/
只要执行一次查询的时间不超过 50 毫秒,我并不是真的在寻找效率。
截至目前,大约有 10000 多个条目,但它可能会随着时间的推移而增长。