草庐IT

REGEXP_EXTRACT_ALL

全部标签

mysql - 如何: Find and update all the entries where the value in one column shows up more than once

我有一个包含以下列的表格:subid-资源的idauthorid-作者的id排序-作者在引用中的顺序对于用户可以提交资源并引用多个作者的应用程序。作者可以在他们的投稿中引用主要和次要作者,而且通常会这样做。有一种情况,用户(称他为用户111)提交的所有条目都将自己列为主要作者,实际作者为次要作者。不幸的是,那个人已经离开了这个项目,所以我来解决这个问题(我必须纯粹用sql来做)。我正在尝试弄清楚如何构建一个查询来执行以下操作:查找所有条目subid值在表中出现多次其中至少一个authorid值是111111的排序大于非111的任何用户的排序并更新它们not(111)作者的排序为“0”并

mysql - 用于选择美国多个州的模式设计,或 "all"

作为一个简化示例,假设我正在销售小部件。我在全国(美国和加拿大)销售它们,但有些只能在特定地区(美国一个或多个州或加拿大省)销售。我想要一种存储此信息的好方法,以及一种查询给定用户可用的小部件的快速方法。“美国,50个州和华盛顿特区。”是最常见的值,所以我不想插入51行。MySQL不支持位图索引,所以排除了。这里有一些组合:美国50个州和哥伦比亚特区美国50个州、哥伦比亚特区、加拿大,但不包括魁北克。美国48个相邻的州和哥伦比亚特区美国哥伦比亚特区,但不包括科罗拉多美国、哥伦比亚特区和领土(波多黎各等)。我的用户会为他们的州/省和国家/地区提供一个值。您能推荐一个提供良好存储和快速匹配

mysql - 在 MariaDB 中使用 REGEXP_REPLACE 进行正则表达式查找和替换的正确语法是什么?

我需要对名为post的MySQL表中名为message的列运行正则表达式查找和替换。我的数据库运行的是MariaDB10。根据docs,MariaDB10有一个新的REGEXP_REPLACE函数专门用来做这个,但我似乎无法弄清楚实际的语法。它将影响280,000行,因此理想情况下,还有一种方法可以在我测试它时将其限制为一次仅更改一个特定的行,或者只是执行SELECT而不是UPDATE直到我确定它可以满足我的要求。我要运行的正则表达式:\[quote\sauthor=(.+)\slink=[^\]]+]替换字符串:[quote="$1"]以下是我尝试过的,但它只是抛出一个SQL错误:U

mysql - 如果在 UNION ALL 查询中找不到任何行,则返回默认值

场景我有一个由此question开发的查询,优化的一部分是创建一个用于为用户和销售生成统计信息的MySqlView,问题是当SELECT行之一没有结果时,它会从结果表。问题如果没有找到任何SELECT的行,如何告诉MySql设置默认值(例如0)?代码这是创建View的代码CREATEORREPLACEVIEWuser_eventsASSELECT'Completeprofiles'AStype,created_atFROMusersWHEREcompleted_registration=1UNIONALLSELECT'Incompleteprofiles',created_atFROM

mysql - 为什么 MySQL 不支持 'LIMIT & IN/ALL/ANY/SOME subquery'

几乎每个人都遇到过这个子查询错误:ThisversionofMySQLdoesn'tyetsupport'LIMIT&IN/ALL/ANY/SOMEsubquery在这种情况下,每个答案都建议我们用leftouterjoin替换子查询。支持in操作的限制子查询是一个很好的特性,因为很多子查询都是用in操作符,但是为什么MySQL开发组决定不把它引入MySQL,有没有在子查询中限制这些运算符的原因是危险的还是性能不佳?2016年11月30日,作为Mysql8.0最新的测试草案文档,MySQL仍然不支持这种子查询。http://dev.mysql.com/doc/refman/8.0/en

mysql - 如何从 union all join 查询中删除重复项

我有一张表,其中包含零件号和这些零件号的价格。这是我的主表,大约有100000个条目。我还有3个可能的供应商表。并非主表的所有零件编号都在所有3个供应商表中,并且3个供应商表的内容也不同。我想要的是在3个表中查询我的主表的部件号。如果在多于1个表中找到零件号,它应该只返回价格最低的一个。如果仅在1个表中找到,则返回该零件的价格。我现在正在做的是下面的查询:SELECT`table1.partnumber`,`table1`.`price`,`maintable`.`price`FROM`table1`INNERJOIN`maintable`ON`table1`.`partnumber`

mysql - MySQL 的 REGEXP 无法正常工作

如果我想在name字段中搜索字符串léon的所有数据,我使用这样的查询:SELECT*FROM`my_table`WHERE`name`REGEXP'léon'这个请求是可以的。现在,我需要检索所有包含字符串léon或leon或lèon的行,所以我尝试了:SELECT*FROM`my_table`WHERE`name`REGEXP'l[éeè]on'此查询无效...我没有错误,但没有结果。你有什么想法吗? 最佳答案 MySQL的正则表达式don'tworkreliablywithmultibytecharactersets.但是,如

mysql - 如何使用 RegExp 在 MySQL 中创建阿拉伯字符类?

例如我想创建一个类字符,aradigit[٩-٠]..contentalldigits.对应的Unicode是[U+0660-U+0669],我试过这个:Select*FROMemployeesWHEREIDREGEXP[\u{0660}-\u{0669}];我收到这个错误#1064-YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear'[\u{0660}-\u{0669}]LIMIT0,25'atline1"

具有条件聚合的 MySQL UNION ALL (Full Join)

我有三个表:CREATETABLE`Agreement`(`AID`bigint(20)NOTNULLAUTO_INCREMENT,`FLAGS`bigint(20)NOTNULLDEFAULT'0',PRIMARYKEY(`AID`));CREATETABLE`Assessment`(`ASMID`bigint(20)NOTNULLAUTO_INCREMENT,`AID`bigint(20)NOTNULLDEFAULT'0',`Amount`decimal(19,4)NOTNULLDEFAULT'0.0000',`Description`text,PRIMARYKEY(`ASMID`

php - 语法错误或访问冲突 : 1139 Got error 'empty (sub)expression' from regexp

我有这个正则表达式:REGEXP'(^0+|0+)17198671(0+|$)$'需要匹配这样的字符串US0017198671000171986710000000000000001719867100000000基本上我需要的是,如果字符串中有所有相同的数字替换零并以零结尾或什么都没有,我想匹配它们。我不明白为什么这个有效的正则表达式不适用于MySQL 最佳答案 MySQL正则表达式引擎不允许空替代,例如ab(c|)或a|。(0+|$)部分匹配输入字符串末尾的1+个零或空字符串,这会导致错误。请注意(^0+|0+)意味着一个或多个零不