在SQL中(遗憾的是)LIKE由于数据库违反了几乎所有规范化规则,因此经常不得不使用" "条件.我现在无法改变它.但这与这个问题无关.
此外,我经常使用条件,例如WHERE something in (1,1,2,3,5,8,13,21)更好的可读性和SQL语句的灵活性.
在没有编写复杂的子选择的情况下,有没有可能将这两种方法结合起来?
我想要一些简单WHERE something LIKE ('bla%', '%foo%', 'batz%')而不是这样的东西:
WHERE something LIKE 'bla%'
OR something LIKE '%foo%'
OR something LIKE 'batz%'
Run Code Online (Sandbox Code Playgroud)
我在这里使用SQl Server和Oracle,但我很感兴趣,如果在任何RDBMS中都可以这样做.
我当前的查询如下所示:
SELECT * FROM fiberbox f WHERE f.fiberBox LIKE '%1740 %' OR f.fiberBox LIKE '%1938 %' OR f.fiberBox LIKE '%1940 %'
Run Code Online (Sandbox Code Playgroud)
我做了一些环顾四周,找不到任何类似于LIKE IN()的东西 - 我设想它的工作方式如下:
SELECT * FROM fiberbox f WHERE f.fiberbox LIKE IN('%140 %', '%1938 %', '%1940 %')
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我只是以错误的方式思考问题 - 一些我从未见过的模糊命令.
MySQL 5.0.77-community-log
正如标题所说,我需要在一个句子中找到两个特定的单词.但它们可以是任何顺序和任何外壳.我如何使用正则表达式执行此操作?
例如,我需要提取单词,test并long从下面的句子中提取单词test是第一个还是long来自.
This is a very long sentence used as a test
Run Code Online (Sandbox Code Playgroud)
更新:我在第一部分中没有提到的是它也需要不区分大小写.
问题是关于MySQL/MariaDB JSON函数.
如何找到多个JSON结构的交集?
在PHP中,使用以下代码完成:
array_intersect(
['a', 'b'],
['b', 'c']
);
Run Code Online (Sandbox Code Playgroud)
如果我们想象一个名为JSON_INTERSECT的函数,代码将如下所示:
SET @json1 = '{"key1": "a", "key2": "b"}';
SET @json2 = '["b", "c"]';
SET @json3 = '["c", "d"]';
SELECT JSON_INTERSECT(@json1, @json2); // returns '["b"]';
SELECT JSON_INTERSECT(@json1, @json3); // returns NULL;
Run Code Online (Sandbox Code Playgroud)