是不是我孤陋寡闻了,会有人真的在 MySql 里运行这样的查询吗?

231 天前
 unidotnet

这种 Non-Standard SQL 语法为什么还能活着

SELECT * FROM table1 
WHERE '你好啊这是一句用户输入的查询语句' LIKE CONCAT('%', table1.column1, '%');

当然不考虑 performance ,它是可以的,但是如果数据量大,就 GG 了吧?

8673 次点击
所在节点    数据库
67 条回复
Pastsong
231 天前
这个语句哪个部分是 Non-Standard SQL 了?
cpstar
231 天前
等等,谁给我解释一下这个语句是要干啥?判断用户输入的那个查询语句是否包括 table1.column1 这个字符串?正经人不应该在语言层面 indexOf 或者正则匹配之类的?从哪开的脑洞回去数据库层面搞这个?
jzphx
231 天前
我也孤陋寡闻了,concat 列 之后 like xxx 见过,没见过 xxx like concat 列
qinrui
231 天前
性能也没损失呀
ho121
231 天前
楼主都说了不考虑性能是没有问题的。
实际上很多场景确实不用考虑性能。
harryWebb
231 天前
我之前还真经常这么写,但是不是用在系统上面。。。而是自己用来 navicat 面板的时候查特定的数据验证使用。。。。
GoNewEra
231 天前
SELECT * FROM table1
WHERE LOCATE(column1, '你好啊这是一句用户输入的查询语句') > 0;
VeryZero
231 天前
在复杂的业务和巨大的屎山下没有什么 sql 是不可能的
Lockroach
231 天前
如果你将业务逻辑放到数据库来执行的话,是有可能这样写的
foufoufm
231 天前
业务代码是有可能的,特别是这段 sql 是其中的一环,或者是中间集
GBdG6clg2Jy17ua5
231 天前
这是什么神奇的写法,为啥是 like 字段,而不是字段 like 输入的?
1 )如果是 table1.column1 like '%输入%',我是经常这样写的。用户量摆在那里,没啥事。比如模糊匹配用户客户号,身份证号。
2 )如果是'输入' like %table1.column1%,这语法能正确吗?
lazyfighter
231 天前
看个屁场景, 公司有多 low , 写出这种代码
cyrivlclth
231 天前
@bestmos 大概是搜索用户输入的内容中是否包含表当中设置的关键词
mmdsun
231 天前
这是用了 Mybatis 又不知道怎么传参数拼接吧。。。
'%输入%' mysql 现在有额外优化吗?
abolast
231 天前
看到 like 就头疼
mayday526
231 天前
多层级结构就用到,只有这样能查到 2/3/4/节点的所有祖先节点(节点 2/,节点 2/3/):
SELECT * FROM department WHERE '2/3/4/' LIKE CONCAT(path,'%');
jpyl0423
231 天前
第一次知道还能这样用
cslive
231 天前
涨姿势了
iyiluo
231 天前
这种写法我也第一次见,做过滤词我都是在程序端实现的,用 sql 不好迁移,词库一多容易炸掉
julio867
231 天前
好多年不写 SQL ,没看懂😅

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1115574

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX