Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql查询字段内的单词_Sql - Fatal编程技术网

Sql查询字段内的单词

Sql查询字段内的单词,sql,Sql,我有一个名为“意愿”的数据库字段,其中填充了如下文本: shopping,pool,pc,games shopping,pool,pc,games swimming, pool, pc, games 我需要sql查询,查询文件中有“购物”吗 TY您可以为此目的使用运算符。比如说, SELECT * FROM myTable WHERE willingness LIKE '%shopping%' 但是,如果该字段只是存储一个以逗号分隔的标记列表,那么您可能需要更改模式—目前,该模式尚未规范化。

我有一个名为“意愿”的数据库字段,其中填充了如下文本:

shopping,pool,pc,games
shopping,pool,pc,games
swimming, pool, pc, games
我需要sql查询,查询文件中有“购物”吗

TY

您可以为此目的使用运算符。比如说,

SELECT * FROM myTable
WHERE willingness LIKE '%shopping%'
但是,如果该字段只是存储一个以逗号分隔的标记列表,那么您可能需要更改模式—目前,该模式尚未规范化。例如,该表可能有带有适当外键的
UserId
WillingnessTagId
列。

您可以为此使用运算符。比如说,

SELECT * FROM myTable
WHERE willingness LIKE '%shopping%'

但是,如果该字段只是存储一个以逗号分隔的标记列表,那么您可能需要更改模式—目前,该模式尚未规范化。例如,该表可能有
UserId
WillingnessTagId
列以及相应的外键。

从表1中选择*

SELECT * 
FROM table
WHERE willingness LIKE '%shopping%'
在一个规范化的数据库中,您将有一个意愿表,每个表都有一个ID(比如说1个用于购物)和一个用于此查找表的ID。这样,查询将更加高效:

SELECT * 
FROM table
WHERE willingness_id = 1

非常低效,这确实应该是,但应该有效:

SELECT * 
FROM table
WHERE willingness LIKE '%shopping%'
在一个规范化的数据库中,您将有一个意愿表,每个表都有一个ID(比如说1个用于购物)和一个用于此查找表的ID。这样,查询将更加高效:

SELECT * 
FROM table
WHERE willingness_id = 1

这就是我们正常化的原因

AND (willingness = 'shopping'
OR willingness like 'shopping,%'
OR willingness like '%,shopping'
OR willingness like '%,shopping,%'
OR willingness like '%, shopping'
OR willingness like '%, shopping,%')

这就是我们正常化的原因

AND (willingness = 'shopping'
OR willingness like 'shopping,%'
OR willingness like '%,shopping'
OR willingness like '%,shopping,%'
OR willingness like '%, shopping'
OR willingness like '%, shopping,%')
这就足够了:

select *
from table
where willingness like '%shopping%'
这将在sql server中工作,这应该足够了:

select *
from table
where willingness like '%shopping%'

这将在sql server中工作

这将完成以下工作:

select willingness from table where willingness LIKE '%shopping%'
我建议您阅读MYSQL语句中的字符串比较:


我假设您使用的是MySQL,如果不是,请告诉我们您使用的是什么。

这应该可以做到:

select willingness from table where willingness LIKE '%shopping%'
我建议您阅读MYSQL语句中的字符串比较:


我假设您使用的是MySQL,如果不是,请告诉我们您使用的是什么。

您不应该像这样将数据存储在数据库中。让我解释一下:

您可以使用人们在这里提到的解决方案(
如%shopping%
等),但这样做确实是自找麻烦

阅读关于规范化的文章。您可以使用一个
意愿
表,而不是一个
意愿
字段,该表的外观如下所示:

person_id     willing

1             pool
2             shopping
2             pool
3             swimming
3             games
等等


然后,您只需要一个查询,如
从where willing=“pool”
中选择不同的人员id。就是这样-更安全,可能更快。

您不应该像这样将数据存储在数据库中。让我解释一下:

您可以使用人们在这里提到的解决方案(
如%shopping%
等),但这样做确实是自找麻烦

阅读关于规范化的文章。您可以使用一个
意愿
表,而不是一个
意愿
字段,该表的外观如下所示:

person_id     willing

1             pool
2             shopping
2             pool
3             swimming
3             games
等等


然后,您只需要一个查询,如
从where willing=“pool”
中选择不同的人员id。就是这样-安全得多,可能更快。

以这种不可用的形式存储数据的原因是什么?它来自rss字段的数据不是由meSo生成的,然后在解析提要时将其拆分。以这种不可用的形式存储数据的原因是什么?它来自rss字段的数据不是由meSo生成的,然后在解析提要时将其拆分。