gpt4 book ai didi

MySQL - REGEX 从字符串和匹配词中搜索词应该是 alnum 或仅数字

转载 作者:行者123 更新时间:2023-11-29 02:40:23 25 4
gpt4 key购买 nike

问题:如果我在 where 子句中传递任何单词,那么仅当传递的单词是 alnum 或 num 时,查询才应使用 mysql 正则表达式返回。

我有一个地址表。

address table 
--------------------
id | name
--------------------
1 | 123 demo
--------------------
2 | 1st demo
--------------------
3 | 123
--------------------
4 | demo

示例 1

SELECT * FROM address WHERE name regexp '(^|[[:space:]])123([[:space:]]|$)'

结果:应返回第 1,3 行。对我有用

示例 2

SELECT * FROM address WHERE name regexp '(^|[[:space:]])1st([[:space:]]|$)'

结果:应返回第 2 行。对我有用

示例 3

SELECT * FROM address WHERE name regexp '(^|[[:space:]])demo([[:space:]]|$)'

结果:它不应返回任何行。但它返回 1,2,4 行

Final:因此,如果我在 where 子句中传递“demo”,则不应返回任何结果。

http://sqlfiddle.com/#!9/acc5c8/2

最佳答案

我想推荐这样的词界语法:REGEXP '[[:<:]]demo[[:>:]]'

http://sqlfiddle.com/#!9/d63e05/1

老实说,如果这是我的项目,我会做 ctype_alnum()在访问数据库之前检查搜索值。但是,您的要求是:

only if passing word is alnum or num only using mysql regex

要确保查询中的针串至少包含一个数字,请在 WHERE 子句中添加另一项检查。

更具体地说...

SELECT * FROM address WHERE address REGEXP '[[:<:]]demo[[:>:]]' AND 'demo' REGEXP '[0-9]'

这将不返回所需的任何行。

关于MySQL - REGEX 从字符串和匹配词中搜索词应该是 alnum 或仅数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53849160/

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