[英]Why MySQL REGEXP [:space:] match with character that are not in the data at all
我的查询中有这个条件
SELECT r.roomid as room_id, up.name as partner_name, up.avatar as partner_avatar, m.message as last_partner_message, ...
...
WHERE uo.id = "${ownerId}"
AND ( (up.name = "" OR up.name IS NULL)
OR ( up.name LIKE "${keyword}%"
OR up.name REGEXP "[:space:]${keyword}*" )
语境:
- up = 用户伙伴,uo = 用户所有者。
- ${value} 是字符串文字中的 javascript 变量
当我将keyword
作为z
插入时,它显示的结果如下:
"data": [
{
"room_id": "Nngdys/v2EDHAY4V",
"partner_name": "Mai Toyota", /* please take a look at every partner_name value */
"partner_avatar": "example_url_image.com",
"last_partner_message": null,
"last_chat_minute": null
},
{
"room_id": "7GEf2kRUYgLrpgzD",
"partner_name": "Georgmain Lo",
"partner_avatar": "example_url_image.com",
"last_partner_message": null,
"last_chat_minute": null
},
{
"room_id": "9Ji1w+mgvMRy9BzH",
"partner_name": "Toyota Mai",
"partner_avatar": "example_url_image.com",
"last_partner_message": null,
"last_chat_minute": null
},
{
"room_id": "ISkm3GYz7oDu4x5w",
"partner_name": "Georgmain Lo",
"partner_avatar": "example_url_image.com",
"last_partner_message": null,
"last_chat_minute": null
},
{
"room_id": "CmY9HDG8YuadjwvN",
"partner_name": "Georgmain Lo",
"partner_avatar": "example_url_image.com",
"last_partner_message": null,
"last_chat_minute": null
}
]
如您所见, partner_name
值中甚至没有z
。 原来这个结果发生在keyword
中的每个字符输入。 但是,如果我插入两个或更多字符,那就很好了。
我不明白为什么。
更新:
[:space:]${single_char}*
将匹配其中有空格的每个值。
评论作为答案:
请注意, *
表示零个或多个匹配项。 +
表示一个或多个。 您可能想改用[[:space:]]s+
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.