gpt4 book ai didi

mysql - 在 MySQL 中使用正则表达式在字符串前设置一个或多个字符?

转载 作者:行者123 更新时间:2023-11-30 21:51:21 26 4
gpt4 key购买 nike

查询要求:

[一个或多个字符]%[名字]_[姓氏]%[零个或多个字符]

当前解决方案:

SELECT first_name, second_name, attribute
FROM users
WHERE attribute
REGEXP BINARY concat('%', first_name, '_', second_name, '%');

输出:

first_name    second_name    attribute
Mikel Cover %Mikel_Cover%
Vicenta Kravitz 0%Vicenta_Kravitz%
Shayne Dahlquist 0R0V331K8Q7ypBi4Az3B6Nm0jCqUk%Shayne_Dahlquist%46E3O0u7t7
Mikel Kravitz PBX86iw1Ied87Z9OarE6sdSLdt%Mikel_Kravitz%W73XOY9YaOgi060r2x12D2EmD7

由于第一个要求,不应打印第一行。

我的建议:

+, +[[:digit:]]+|[[:alpha:]]+$, '%%'

REGEXP BINARY concat('+%', first_name, '_', second_name, '%');

如何更改查询以避免第一行?

最佳答案

您可以通过以下方式修复正则表达式:

WHERE attribute REGEXP BINARY concat('.+%', first_name, '_', second_name, '%');

通过添加 .+,您需要在模式中的第一个 % 之前有任何 1 个或多个字符。实际上,只使用 . 就足够了,因为 REGEXP 允许部分匹配。

如果您想确保 % 之前的字符是字母数字字符,请使用 [[:alnum:]] 而不是点:

WHERE attribute REGEXP BINARY concat('[[:alnum:]]%', first_name, '_', second_name, '%');
^^^^^^^^^^^

关于mysql - 在 MySQL 中使用正则表达式在字符串前设置一个或多个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47139826/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com