如何使用SQL匹配字符串中包含特定字符串组的任意一项?

SQL匹配字符串包含一组特定的字符串,选择FIND_IN_SET(MySQL)或全文索引。

FIND_IN_SET('language',condition)>0 适用于逗号分隔的字符串。

全文索引需要创建FULLTEXT索引并使用MATCH AGAINST。

JSON 数据使用 JSON_CONTAINS 函数。

LIKE 无效,扫描整个表。

正则表达式非常灵活,但性能较差。

适合长文本的全文索引,创建ALTERTABLE University_course ADDFULLTEXT(condition)。

MyBatis-Plus 使用 QueryWrapper apply() 来嵌入原生 SQL。

将逗号字符串拆分为相关表并使用 JOIN 查询优化。

你自己考虑一下。

sql查找包含某些字符的列

记得去年夏天,我在一家咖啡馆做报道,外面下着雪。
坐在我旁边的那个人是一名程序员,电脑屏幕上满脸骄傲。
我正在编辑代码来检查大型数据库中的数据,但结果总是错误的。
他尝试了多种方法,最后发现列名拼写错误,而且少了一个连字符。
唉,这样的小错误真是令人恼火。

你看,构建数据库有时就像构建乐高积木。
如果某一小列名写错了,整个程序就会卡住。
例如,您定义了一个变量@colname,并且您首先想要动态查询特定列,但结果写为@collname。
如果没有这封信,整个调查问卷将无法工作。
我过去也犯过这个错误。
我在一家公司的小会议室里盯着投影仪上的代码。
我急着赶去参加下午的会议。
我的手颤抖着,我绊倒了。
我花了大约半个小时才弄清楚。

因此,动态 SQL 查询可能看起来很高级,但实际上,最让您害怕的是这些细节。
当你定义一个变量时,你应该用你旁边的人的行为来检查它。
输入信息也是如此。
模拟数据时,列名和值必须匹配,不能有不一致的情况。
我曾经将表格结构的设计保存在旧笔记本中。
它是用彩色笔绘制的,并且标记清晰。
我总是在编写动态 SQL 之前检查它。

例如,您有一个名为 table1 的表,其中包含列的代码和名称。
您想要检查带有代码“1 2 3 ”的名称列。
编写动态SQL时,必须确保@colname变量的值为“name”,@code为“1 2 3 ”。
您可以使用 LIKE '%Zhang%' 检查名称中包含某些字符的列,例如“Zhang”。
上次我在图书馆查数据时,我看到有人使用这种模糊查询来匹配字符串和空格,结果非常棒。

等一下,还有一件事。
运行 SQL 时有时会出现数据库缓存问题。
现在您运行查询并且数据被缓存。
下次运行相同的动态 SQL 时,您可能找不到它。
上次我在一个新学员面前演示过,他按照我写的步骤一步步操作,结果却找不到数据。
后来数据库我让他重启服务,信息就出来了。
它有点神秘,但它就在那里。

总之,动态SQL虽然是动态的,但使用时要特别小心。
想想看,如果变量名拼写错误,或者没有添加空格,整个查询可能就没用了。
就像做菜一样,调料加得太少或太多,味道就不对劲。
有时,当我做饭时,我会提前在便利贴上写下所有香料的用量,以确保味道正确并相应地遵循。

最后,这个动态SQL的效率如何?如果检查包含“Zhang”的姓名列,它是快还是慢?我认为这取决于数据量。
如果表很大,查询可能会很慢。
上次我在一台旧电脑上进行大量数据的查询,卡住了十多分钟。
最后我通过分表的方式解决了。
你应该尝试找出答案。

sql语句中查找某字段中含有某字符串的语句怎么写?

你好,你的问题很不同。
事实上,使用通配符(例如 LIKE 和 %)搜索包含特定字符串的记录是 SQL 中非常常见的做法。
我在上一个项目中使用了它。
例如,假设有一个名为 user 的表,您想要查找所有具有用户名字段且用户名是“小明”的记录。
那么这个SQL语句就是:
sql。
从用户名为“%小明%”的用户中选择
这个%表示可以匹配到的任意字符的个数,无论是“小明”之前还是之后。
所以如果用户名是“小明的同学”、“爱小明的小明”等,就会出现。

但是,您应该注意性能问题。
我以前在一个非常大的数据库中使用过这种类型的模糊查询,但是查询时间非常长。
它需要全表扫描,因为数据库不知道去哪里查找。
因此,如果数据量特别大,最好考虑添加索引或者用真实条件替换查询中模糊部分等优化方法。

一般来说,LIKE '%string%' 方法对于检查是否包含特定字符串非常实用,但您应该意识到可能的性能影响。