LIKE CONCAT('100','%')
concat(a,b) sql语句中一个用来连接字符串的函数。
比如:select concat(name,age) from student; 从student表中查学生的name和age信息合在一起展示。你随便找张表试一下就知道这个函数了,很简单的。
LIKE CONCAT('100','%'),你这个查询条件意思应该是:查询开头是100的字符串,比如:100aaa,100,100xyz等。
你说的组织及下级组织,我理解是,100是组织,100+字符串(比如100abc)是下级组织。
模糊查找:%代表零个或多个字符,_代表一个字符
只有存在一个%是SQL语句只查看到开头为100,对吗?
@流_hate: 你这就一个小片段我根本不知道你是啥东西,like都是和where联用,比如你查我感觉你这段写的很奇葩,我也不敢评价,就说了下%和_特殊字符串的意义,假设查a表,100 开的文字
select * from a where 字段名 like ('100%');
@小小咸鱼YwY: 我只复制了like语句这一块,用这个是来查询组织以及下级组织,老资格的java大神说是这样写的,我就是不理解,所以提出疑问的
@流_hate: 我写的是原生sql,你只要记住模糊查询里面%代表零个或多个字符,_代表一个字符就可以了,知道点正则呢很容易理解,
`100%你可以想成正则里面的^100.*,%100是.*100$,%100%是100,_就是相当于正则里面的.
防止被攻击
就是 like '100%' 这样理解
如果没有动态这个和攻击没有关系。单纯的写 like @a+'%' 或 like concat(@a,'%') 是一样的效果。
有差别就是@a可以不一定是字符串类型,可以是数字,但是第一种写法只能是字符串。
like '100%' 会被sql注入
说得concat就不被注入一样- -!
上面已经说明了,如果是字符串,动态的情况下都可能被注入,同注入没关系。
这居然有反对,再花点时间学习吧!