我有这样一张桌子:
TITLE | DESCRIPTION
------------------------------------------------
test1 | value blah blah value
test2 | value test
test3 | test test test
test4 | valuevaluevaluevaluevalue
Run Code Online (Sandbox Code Playgroud)
我试图弄清楚如何返回每个描述中字符串出现的次数.
所以,如果我想计算'value'出现的次数,sql语句将返回:
TITLE | DESCRIPTION | COUNT
------------------------------------------------------------
test1 | value blah blah value | 2
test2 | value test | 1
test3 | test test test | 0
test4 | valuevaluevaluevaluevalue | 5
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?我根本不想使用php,只是mysql.
我有这样一张桌子:
UID(int) NUMBERS(blob)
----------------------
1 1,13,15,20
2 3,10,15,20
3 3,15
Run Code Online (Sandbox Code Playgroud)
我想测试3和15是否在名为NUMBERS的blob中.并且可以看到LIKE %%无法使用
只选择ID为2的行和三个scoulb ...
我有一个MySQL字段,引用另一个表,其中id被保存为逗号分隔列表,例如:
12,13,14,16
Run Code Online (Sandbox Code Playgroud)
它代表另一个表中的值.我知道这是非常糟糕和错误,但这来自上面,我不能做任何事情.现在的问题是我想用这样的查询在该字段中搜索:
SELECT ... WHERE field LIKE '%1%'
Run Code Online (Sandbox Code Playgroud)
问题现在很明显,几乎所有条目都可以通过此示例查询找到,因为最常见的ID位于范围10-20中.我的想法是搜索%,1,%,但这不适用于该字段中的第一个和最后一个ID.我有类似内部替换的东西或我如何解决这个最好的方法?
所以我的问题非常简单:
我在SQL中有一个列,它是一个以逗号分隔的列表(即cats,dogs,cows,)我需要仅使用sql 来计算其中的项目数(因此无论我的函数是什么(现在让我们称之为fx)都会像这样工作:
SELECT fx(fooCommaDelimColumn) AS listCount FROM table WHERE id=...
Run Code Online (Sandbox Code Playgroud)
我知道那是有缺陷的,但是你明白了(顺便说一句,如果值fooCommaDelimColumn是cats,dogs,cows,,那么listCount应该返回4 ......).
就这些.
TABLE_A
column name: list_id
record 1: 1,2,5,6,8
record 2: 1,3,2
record 3: 6,7,2
record 4: 9,8,0
Run Code Online (Sandbox Code Playgroud)
表-B
id ='2';
Run Code Online (Sandbox Code Playgroud)
如何选择id='2'逗号分隔字符串中的记录?从上面的例子中,它应该返回记录1,2和3.
查询(如何修改此查询?):
SELECT * FROM Table_a,Table_b WHERE Table_b.id = Table_a.list_id;
Run Code Online (Sandbox Code Playgroud) 我有一个产品表,其中包含一个名为"类别"的字段,用于将产品相关类别ID保存为逗号分隔值.我正在使用正则表达式来搜索某个类别的产品.
假设有包含4,24,1,31
我的表达式的记录,
..WHERE categories REGEXP ',?4,?'
Run Code Online (Sandbox Code Playgroud)
但这会返回类别4和产品24
我只需要显示类别4.
我错过了什么吗?
对于某些背景,我正在尝试创建一个包含多个食谱的数据库.但是,必须将各种成分与它们最初来自的配方联系起来.
例如,我有包含所有单独成分的表.

并且存储食谱的表格减去成分.

现在,我发现这篇文章介绍了如何使用T-SQL XML命令拆分字符串,以及用于执行此操作的代码是:
SELECT
Books.BookId,
Books.Book,
BookAuthors.AuthorId,
BookAuthors.Author
FROM Books
CROSS APPLY dbo.split(Books.Authors,',') split
INNER JOIN BookAuthors ON BookAuthors.AuthorId = split.val
Run Code Online (Sandbox Code Playgroud)
我正在寻找的结果与此非常相似:

但是,CROSS APPLY等仅适用于MS SQL Server,我的问题是:
是否有可能使用MySQL实现相同或非常相似的效果?
谢谢你的帮助.
我将这样存储的值存储在字段中1,255,230,265。
MySQL中是否有一个函数可以为我提供该字符串中的第二个值?在这种情况下会是255。
我尝试使用locate,但这似乎并不意味着这样做。
我的Mysql表名为company,如下所示
id--username---countries
1---taner--------1,2,3
2---tom----------2,3
3---Jack---------1,3
4---Jenny--------1
Run Code Online (Sandbox Code Playgroud)
我有一个表格,我从它发布国家.
<select name="country" >
<option value="1" >Turkey</option>
<option value="2" >England</option>
<option value="3" >USA</option>
</select>
Run Code Online (Sandbox Code Playgroud)
当我发布表格并获得国家的POST值.
$country=$_POST['country'];
SELECT * FROM company where country='$country';
..............................
Run Code Online (Sandbox Code Playgroud)
我的目的是获取此查询并列出数据属于post值,如果英格兰选择taner和tom必须列出,那么英格兰的选项值是2并且在我的数据库中只有tom和taner包含这个国家值.
那么你的建议是什么?