84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
如果用字符匹配功能,要求字符串同时含有a,b,c,除了像你那样用 and 连接 like 也想不出什么其他好办法。如果把字符串打散成一个array,转而判断集合的包含关系,可以这样:
select * from (values('cabbage'), ('black'), ('sblunc')) as articles(link) where array['a','b','c'] <@ regexp_split_to_array(link, E'\\s*'); link --------- cabbage black (2 行记录)
你说的 patindex 和 charindex 在 SQL Server里有,其他的sql这些函数可能有替代的,具体不是很清楚。
用like '%a%'是要作大死的节奏呀,这子句严重影响执行效率,目测你是想把link包含有字符串'a'的都选择出来,那你应该用下面这句。
like '%a%'
select * from `articles` where position('a' in `link`);
没区别,||是postgresql的拼接符,'a'||'b'拼起来就是'ab'。
Python没用过,不知道,有个list你到底是想同时满足list里所有元素还是满足任一即可?你这SQL用and连接可是要满足所有的,如果是满足任一一个,可以用or,也可以用in,但是like和in的效率问题你自己得试试。
patindex就是查第一个参数在第二个参数的什么位置,返回位置号,不过这是SQL Server专用的,在postgresql里可以用strpos(string, substring)代替。另外注意两点,第一,like避免在开头使用%匹配,否则效率很慢,第二,尽量在where里用到的字段上建索引,加快匹配速度。
如果用字符匹配功能,要求字符串同时含有a,b,c,除了像你那样用 and 连接 like 也想不出什么其他好办法。如果把字符串打散成一个array,转而判断集合的包含关系,可以这样:
你说的 patindex 和 charindex 在 SQL Server里有,其他的sql这些函数可能有替代的,具体不是很清楚。
用
like '%a%'
是要作大死的节奏呀,这子句严重影响执行效率,目测你是想把link包含有字符串'a'的都选择出来,那你应该用下面这句。没区别,||是postgresql的拼接符,'a'||'b'拼起来就是'ab'。
Python没用过,不知道,有个list你到底是想同时满足list里所有元素还是满足任一即可?你这SQL用and连接可是要满足所有的,如果是满足任一一个,可以用or,也可以用in,但是like和in的效率问题你自己得试试。
patindex就是查第一个参数在第二个参数的什么位置,返回位置号,不过这是SQL Server专用的,在postgresql里可以用strpos(string, substring)代替。
另外注意两点,第一,like避免在开头使用%匹配,否则效率很慢,第二,尽量在where里用到的字段上建索引,加快匹配速度。