mssql 将查询结果作为表名参数_原创亲测:mysql包含查询的四种解决方案-示例详解...

测试表和测试数据

e162f3197780b6ebc8af8fca0d101ddb.png

方法1:使用like

LIKE通常与通配符%一起使用,%表示通配pattern中出现的内容,而不加通配符%的LIKE语法,表示精确匹配,其实际效果等同于 = 等于运算符

SELECT * FROM 表名 WHERE 字段名 like "%字符%";

示例:

SELECT * FROM ys_dongtai t WHERE t.content LIKE '%#%';
11fbadf22b32e7932af9a47a68ee3606.png

方法2,使用LOCATE(substr,str) 和POSITION(substr IN str)

返回子串 substr 在字符串 str 中第一次出现的位置。如果子串 substr 在 str 中不存在,返回值为 0:

select * from 表名 where locate(字符,字段)

select * from 表名 where position(字符 in 字段);

示例:

SELECT *,locate('#',t.content) FROM ys_dongtai t WHERE locate('#',t.content) 
cfaf8a9bcf56fb82cd81240979fb345b.png
SELECT *,position('#' in t.content) FROM ys_dongtai t WHERE position('#' in t.content)
f6cd7f9244c44f3b7ff6bddc4de39680.png

方法3:FIND_IN_SET(str,strlist)

语法:FIND_IN_SET(str,strlist)

定义:

1. 假如字符串str在由N子链组成的字符串列表strlist中,则返回值的范围在1到N之间。

2. 一个字符串列表就是一个由一些被‘,’符号分开的自链组成的字符串。

3. 如果第一个参数是一个常数字符串,而第二个是typeSET列,则FIND_IN_SET()函数被优化,使用比特计算。

4. 如果str不在strlist或strlist为空字符串,则返回值为0。

5. 如任意一个参数为NULL,则返回值为NULL。这个函数在第一个参数包含一个逗号(‘,’)时将无法正常运行。

strlist:一个由英文逗号“,”链接的字符串,例如:"a,b,c,d",该字符串形式上类似于SET类型的值被逗号给链接起来。

示例:

SELECT *,FIND_IN_SET('攀登者',t.content) FROM ys_dongtai t WHERE FIND_IN_SET('攀登者',t.content)
57e19593add7da32cd9890e387a8c890.png

find_in_set()和like的区别:

主要的区别就是like是广泛的模糊查询,而 find_in_set() 是精确匹配,并且字段值之间用‘,'分开。

示例:

SELECT * FROM ys_dongtai t WHERE '攀登者' IN(t.content)
0616d3a85aba8acda0efed3f936a3bb6.png

查不到结果,因为find_in_set 搜索要匹配的内容为变量,in搜索要匹配的内容为常量,只有查询内容和字段内容一致时才可以查到

示例

SELECT * FROM ys_dongtai t WHERE '我和我的祖国#攀登者#红海行动#战狼2' IN(t.content)
99595e662cce5cc823d59fbe841736b8.png

方法4: INSTR(str,dlim)

可代替传统的like方式查询,并且速度更快。

instr 函数,第一个参数是字段,第二个参数是要查询的串,返回串的位置,第一个是1,如果没找到就是0.

示例

SELECT *,instr(t.content,'#') FROM ys_dongtai t WHERE instr(t.content,'#') 
5f6b82e9c294c8a257180293730c8682.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值