我想在我的数据库中做一个搜索,这给了我所有字段的id,一个给定的字符串将包含。如果我有字符串"a, b, c"字段a和b我想要显示出来。有一个简单的方法来做它与SQL?我的脑子好像卡住了。
我可以在字符串的每个可能的子字符串上使用LIKE操作符,或者只是比较没有sql的字符串,但我希望有一个更容易,更好的解决方案。
例如:如果我的表格是这样的:
<表类>id 子字符串 tbody><<tr>1 "你好"> 2"两个"> 3 "测试"> 表类>
在Postgresql中可以使用~
操作符
WITH test AS (
SELECT 1 as id,
'hello' as str
UNION
SELECT 2 as id,
'two' as str
UNION
SELECT 3 as id,
'test' as str
)
SELECT * FROM test WHERE 'hello, this is a test' ~ str
输出:
id|str |
--+-----+
1|hello|
3|test |
查看这个查询的实际操作:https://dbfiddle.uk/Tg_ao0tm
一些简单的东西,比如获取所有单词并创建一个IN查询:
var sql = "select * from mytable where searchfield IN (" + string.Join(", " , inputstr.Split(intowords).Select(encodeforSQL)) + ")";