sql语句怎么包含关键字?

那天我在咖啡馆,邻座小哥对着电脑皱眉头,屏幕上是跳来跳去的数据库查询结果。
他嘟囔着,“怎么这个‘张三’又出来了,上次改完配置,还以为他早该淡出了。
” 我瞥了一眼他的代码,嘿,果然还是那个老掉牙的 LIKE 语句。
他调试了半天,结果发现 name 字段里有个 张三同学,系统就当真给揪出来了。
这让我想起几年前我搞砸的一个项目,也是因为 % 这个东西太随性,结果筛选客户名单时,把姓“石”的都给筛没了。
时间大概是 2 01 9 年冬天,在杭州的写字楼里,具体哪个表名早就忘了,只记得那个 strsql 变量名挺形象的。
等等,还有个事,我好像见过用 INSTR 的,那个 >0 条件,感觉像是老式打字机的敲击声一样,咔嗒咔嗒的。
那个例子里的“张三是个好学生”,要是用正则表达式,是不是可以更精确点?比如 name RLIKE '.张三.是好学生.'?不过 LIKE 简单啊,谁看不懂?那个 String 类型,Java 老铁们用起来顺手得很。
突然想到,如果表里 name 字段存的是拼音,用 LIKE 查“张三”会不会也查到“zhangsan”或者“张珊”?这事儿得试试才知道。

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

LIKE这玩意儿啊,在SQL里头用得挺多。
就是找字符串里头带某个字的。
比如你想查个表,表名叫users,有个字段叫email,你想找所有email里头带gmail.com的,咋写?
就用LIKE '%gmail.com%'。
对,就是%通配符,它代表任意多个字符。
%gmail.com%意思就是,gmail.com前后啥都可以,能找到joel@gmail.com也能找到joe.gmail.com@domain.com。

要是你想找开头是gmail.com的,就写成'gmail.com%',要是找结尾是gmail.com的,就写成'%gmail.com'。

不过说实话,这种带%的模糊查询,数据库查起来会慢点儿。
特别是表特别大的时候,能慢不少。
我记得上次我们查一个千万级别的用户表,用LIKE '%keyword%'查,结果卡了快一分钟,最后改用正则表达式才快起来。

所以,能用精确点的查法,就别用LIKE加%。
比如查email字段是gmail.com的,直接写email = 'gmail.com'不香吗?非要用LIKE '%gmail.com%',查着费劲不说,还占资源。

总之,LIKE加%挺好用,但别在超大数据表上瞎用。
得知道啥时候该用啥时候不该用。

sql 查询所有字段只要包含某关键字的记录

直接上SQL写死。
用like通配符。

上周刚处理一个类似需求。
对,就是这个问题。
之前遇到过。

把所有字段用or连接。
效率不高。

你自己看。