这个问题在这里已经有了答案:REGEXPperformance(comparewith"LIKE"and"=")(2个答案)关闭7年前。SELECTdataFROMtestWHEREcolREGEXP"asdf_[0-9]+"LIMIT1...一组中的1行(1分43.12秒)SELECTdataFROMtestWHEREcolLIKE"asdf_%"LIMIT1...集合中的1行(0.01秒)regexp可以给我准确的结果,如果我使用likesql,我必须过滤数据。有什么改进的方法吗?顺便说一句:测试有200万行并且会增长。
我正在寻找有关MYSQL查询的正则表达式的帮助。我对表达式相当陌生,并且让自己彻底困惑。我的数据库单元看起来像这样1314{{Hereissomedata}}1213{{Moredatahere}}1112{{Dataahoy}}我正在尝试编写一个表达式来尝试匹配数据集,但仅匹配括号内年份内的数据。例如,假设$year=1314和$term="ahoy"。使用以下正则表达式:$year\{\{.*$term.*\}\}它返回一个匹配项-因为它匹配1112前缀数据集的最后一个“}}”。我不希望它这样做,但尽管阅读了这个贪婪/否定的业务,我还是无法使用语法。实现我所追求的目标的最佳方式是什
我试图只返回那些colA和colB不包含数字或空格的行到目前为止,这是我的代码。SELECT*FROMtable_nameWHEREcolAREGEXP'[^0-9^\W]'ANDcolBREGEXP'[^0-9^\W]'给定数据集colAcolB--------------------test|testB33|text我假设我的问题出在我的正则表达式上......请帮忙? 最佳答案 那么您的表达式不起作用,因为:33都是数字,并且您要查找任何非十进制、非空白字符。所以它不包括结果中的那一行。尝试:SELECT*FROMtable_
如何在yii2中使用像下面这样的SQL查询?select*fromSkill_NameswhereSkillNameREGEXP'PHP|MYSQL'我不需要像(SkillNameLike%PHP%orSkillNameLike%MYSQL%)这样的东西,因为我需要使用REGEXP。 最佳答案 最简单的是直接查询:Yii::$app->db->createCommand("select*fromSkill_NameswhereSkillNameREGEXP'PHP|MYSQL'")->queryAll();如果您有Skill_Nam
我正在编写一个SQL查询来选择行,其中以空格分隔数字的字段包含单个数字,在本例中为1。示例字段:"12345111221"-匹配,包含第一"234611101"-不匹配,不包含第一到目前为止最好的查询是:$sql="SELECT*from".$table."WHEREbrandsREGEXP'[/^1$/]'ORDERBYnameASC;";问题是这个REGEXP也找到了11个匹配项我在其他帖子上阅读了很多建议,例如[\d]{1},但结果总是一样的。是否有可能完成我想要的,以及如何完成? 最佳答案 您不需要正则表达式:如果您在列的前
我需要一些有关MYSQL查询的正则表达式的帮助,以搜索包含具有精确模式的单元格的行。我是MYSQL正则表达式的新手。这是一个名为test_table的示例表(json_value是一个数组的json字符串)|id|json_value-----------------------------------------------------------------------------------------------|1|{"field_198":false,"field_4":"Fromqualityoffice","field_9":"productwithhighqualit
我需要一个mySQL请求,我只在其中找到在单个单词中包含大写字符和小写字符之前的字符串。示例:fooExample在最好的情况下,只有在大写字符之前至少有2个字符。所以它不应该找到:例如“iPhone”。并且它必须是A-Z之前的a-z范围内的真实字符。我想我应该使用SQL函数REGEXP,但我无法让它工作,因为我对正则表达式不是很熟悉。 最佳答案 SELECTcolFROMtableNameWHEREcolREGEXP'[a-z]{2}[A-Z]' 关于mysql-需要SQL-Regex
出于某种原因,我似乎无法在MySQL中使用非捕获组。有没有办法在MySQLREGEXP中使用它们?对于PHP的PCRE实现中的非捕获组,我使用以下语法:(?:[PATTERN]) 最佳答案 MySQL正则表达式中的组不是捕获组,因为在SQL中捕获组没有多大意义……好吧,不是没有添加语法来支持使用捕获的子字符串。所以它不支持(?:)语法,因为这种语法在MySQL中毫无意义——组已经不捕获。因此,([PATTERN])是一个非捕获组。 关于mysql-在MySQLREGEXP中使用非捕获组,
所以我有一个包含很多列的表格。假设每一列都包含相似的关键字,仅相差几处。我想根据相似的关键字来选择这些列。起初,这是我的尝试:SELECT*REGEXP'pages_title$'FROM'pages';也就是说,任何以pages_title结尾的列都应该被选中。所以REGEXP应该应用于列的名称,而不是任何条目。这可能吗?我在网上找到的所有示例都与使用REGEXP隔离表中的某些值有关,这不是我想要的。 最佳答案 这不是一个完整的答案,但它可能会有所进展。您可以动态构建查询:declare@qvarchar(1000)set@q='
我需要使用MYSQLREGEXP编写一个查询,该查询将找到具有特定列以11或12等开头的行。我知道我可以使用LIKE或LEFT(####,2)但我想使用REGEXP选项。我的数据存储为110001、122122、130013a等。编辑1:为了表达的更清楚,我想表达一下SELECT*FROMtableWHEREcolumnLIKE'11%'orcolumnLIKE'12%'orcolumnLIKE'30%'"使用正则表达式谢谢! 最佳答案 要匹配以任意两位数字开头的行,您可以使用:SELECT*FROMyourtableWHEREyo