MySQL中的Like和正则表达

嘿,你是在问 LIKE 运算符吗?上周我在帮助同事调试 SQL 时碰巧遇到了这个事情。

例如,假设有一个包含用户名字段的用户用户表。
想要查找所有包含“小”字的用户名,它们怎么拼写?就像这样:
sql 从用户中选择用户名 LIKE '%小%';
你看,它前面是%,后面是%,中间夹着“小”。
这意味着“小”字之前或之后的内容并不重要,只要“小”出现在用户名中即可。
如果写成
sql 从用户中选择用户名类似“小”的用户;
结果会有所不同。
它只会搜索“小”用户名,这显然是不现实的。

另一个常见的场景是搜索以某个单词开头或结尾的单词。
例如,查找所有以“Zhang”开头的用户名:
sql SELECT FROM users WHERE username LIKE '张%';
或者以“王”结尾:
sql 从用户中选择用户名类似“%王”的用户;
要精确匹配,只需使用=。
这与LIKE无关。
但是如果您需要区分大小写怎么办?例如,在MySQL中,LIKE默认是无法区分的,“A”和“a”被视为匹配。
如果你写:
sql 从用户中选择用户名 LIKE BINARY 'A%';
这次做了区分,“a”不算数。

哦,顺便说一句,你提到的正则REGEXP匹配更灵活。
例如,查找姓名中包含数字的用户:
sql 从用户中选择用户名 REGEXP '[0-9 ]';
或者搜索全大写字母的用户名:
sql 从用户中选择用户名 REGEXP '^[A-Z]+$';
简而言之,LIKE适合简单的模糊匹配,而正则REGEXP适合复杂的模式。
您想具体使用哪一个来可视化场景?

mysql让一张表中字段like另一张表中的字段,sql应该怎么写?

哎哟,光听你说的我就头晕了。
你说你回家后不认识门?这和 SQL 语句有什么关系呢?你很困惑吗?
不过话虽如此,我对这个 SQL 语句还是有点理解的。
您检查 key_data_chufadia 表和 key_wordb 表。
使用question_desc字段来匹配b.first_key和b.second_key。
条件的类型为“%keyword%”。
注意你是对的,百分号%前面必须有单引号,否则是不正确的。
上次我在某个系统中更改此设置时遇到了问题。
我花了很长时间检查,因为我没有添加引号。

但是关于你的场景......我不确定。
这是否意味着您忘记了家庭住址,或者您的 SQL 结果没有引导您到正确的门?无论如何,你可以做任何你想做的事。
我离你家门还有千里之遥。