草庐IT

regexp_substr

全部标签

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.但是,如

substring_index 中的 Mysql 多种加工模式

我可以使用case之类的东西在substring_index中给出多个匹配模式吗?更具体地说,在我的情况下,我可以根据字符的ascii匹配一组字符吗?添加一些例子:中文Q100中文T800中文中文K999字符串以一些汉字开头,然后是一些数字或拉丁字母,我想要的是将字符串分成两部分:一个包含汉字(从最左边到第一个西文字母),另一个是从第一个西方字母到最右边。像这些:中文,Q100中文,T800中文中文,K999 最佳答案 有多种方法可以解决一个问题。我会给你3个,从最右边开始。架构解决方案使用应用程序您的问题是关于-用正则表达式替换。

php - Zend Framework 2 中的 SUBSTRING()/MID() 语句

我正在尝试实现以下非常简单的查询:WHEREa.first_tableISNULLANDa.second_tableISNOTNULLANDSUBSTRING(b.third_table,5,2)=@plan_year;正如您可能猜到的,前两个陈述并不是真正的问题。我目前无法通过Zend实现SUBSTRING(),因为我想保持代码DB-System中立。有什么办法可以做到这一点吗?谢谢 最佳答案 如何使用SUBSTR而不是SUBSTRING?WHEREa.first_tableISNULLANDa.second_tableISNOT

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(所以没