草庐IT

REGEXP_SUBSTR

全部标签

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

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

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"

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

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

mysql - 将 REGEXP_REPLACE 替换为 DISTINCT

我尝试将distinct与REGEXP_REPLACE结合使用,但返回了0行。我在MySQLPv8.0中创建了一个测试表CREATETABLEphone(idserialprimarykey,phone_numberchar(25));INSERTINTOphone(phone_number)VALUES('(423)330-9999');INSERTINTOphone(phone_number)VALUES('(423)3309999');INSERTINTOphone(phone_number)VALUES('423-330-1111)');INSERTINTOphone(phon

mysql - 如何使用单词边界在 MYSQL REGEXP 查询中查找带有连字符的单词?

我有一个MYSQL查询来尝试查找带有连字符的单词。我正在使用MYSQL字边界。SELECTCOUNT(id)AScountFROMtableWHERE(nameREGEXP'^[[:]]/')这似乎行得通,尽管以下行不通(请参阅“连字符”一词后面的-):SELECTCOUNT(id)AScountFROMtableWHERE(wordsREGEXP'^[[:]]/')我试图用\-转义-'s,但这似乎并没有改变结果。我还尝试将-放在方括号中,例如[-],但这似乎并没有改变结果。在理解连字符将在“词”内并可能在“词”末尾的情况下,编写此查询的正确方法是什么? 最

使用 Rails ActiveRecord 的 MySQL REGEXP

这已经困扰我一段时间了...我需要查询一个用户表并找到名称中有两个空格的用户。我有多个直接针对数据库的SQL查询版本,最简单和更简洁的是:SELECT'firstlast'REGEXP'[[:space:]]{2}';我还可以使用ruby​​REGEX使其在rails上工作:User.pluck(:full_name).select{|n|n=~/([[:alpha:]]*)[[:space:]]{2}/}或User.pluck(:full_name).select{|n|n=~/\w+\s{2}/}我一直在尝试以多种方式使用AR,但我不确定我错过了什么。也许我需要逃避什么...我读了

mysql - 如何将 REGEXP 与转义序列(如字边界)一起使用?

在MySQL(8.0.5+)中使用ICU-REGEXP执行单词边界搜索时不起作用。据我了解应该是a-la$mysql-e'SELECTREGEXP_LIKE("aaaabcccc",".*\b+abc\b+.*")'+---------------------------------------------+|REGEXP_LIKE("aaaabcccc",".*\b+abc\b+.*")|+---------------------------------------------+|0|+---------------------------------------------+但是

mysql - 捷克语 "ch"字母如何存储在 mysql 中以及如何使用 substr 获取它?

即使“ch”显示为两个字母,在捷克语中它被视为一个字母并且其在字母表中的顺序在H字母之后(因此正确的顺序是a,b,c,d,e,f,g,h,ch,i,j(我跳过了一些国家字符)。但是当我这样做时包含以ch开头的单词的列上的substr(colname,1,1)我只得到“C”此sql:SELECTSUBSTRING(title,1,1)AStitle_truncatedFROMnodenodeWHEREnode.typein('termin')GROUPBYtitle_truncatedORDERBYtitle_truncatedASC"返回:A、B、C、D、E、F、G、H、I、J(所以没

MySql REGEXP 运算符

mySqlREGEXP运算符不区分大小写。此运算符是否有区分大小写的版本? 最佳答案 使用BINARY关键字,它强制REGEXP将字符串匹配为二进制字符串,区分大小写。SELECT'a'REGEXP'A','a'REGEXPBINARY'A';虽然这不是明确的statedinthedocs(您可以使用常规字符串来完成),根据我的经验,它按预期工作。 关于MySqlREGEXP运算符,我们在StackOverflow上找到一个类似的问题: https://sta