like和regex运算符之间的区别

use*_*841 12 regex mysql sql sql-like

我现在正在学习MySQL.我需要你帮助理解这些查询之间的区别:

select id from tab where id like '000';

select id from tab where id regex '000';
Run Code Online (Sandbox Code Playgroud)

cod*_*ict 12

您的第一个查询使用like运算符但不使用任何通配符.所以它相当于:

select id from tab where id = '000';
Run Code Online (Sandbox Code Playgroud)

其中仅列出id的地方id000.

第二个查询使用regex运营商和它列出行,其中id000 随时随地在里面.

例如:它会列出这些id的:1000,2000,000,0001

要使您的第一个查询行为与第二个查询相同,您必须使用%匹配零个或多个字符的通配符:

select id from tab where id like '%000%';
Run Code Online (Sandbox Code Playgroud)

要使您的第二个查询行为与拳头一样,您必须使用start anchor(^)和end anchor($):

select id from tab where id regex '^000$';
Run Code Online (Sandbox Code Playgroud)