草庐IT

FILTER_VALIDATE_REGEXP

全部标签

mysql - 如何强制 filter() 匹配 sqlalchemy 中的确切大小写(区分大小写)?

我正在使用sqlalchemy和mysql数据库。当我在用户对象上使用以下查询时:session.query(User).filter(User.name=='admin').all()我得到的所有结果的用户名都是“Admin”、“admin”、“ADMIN”(基本上都是不区分大小写的“admin”)。我想知道如何强制filter()过滤完全匹配项(不忽略大小写)?更新:实际上我才知道mysql不允许varchar()数据类型区分大小写的列。因此,最简单的解决方案是在mysql中声明时强制列区分大小写,如:`name`VARCHAR(255)BINARYNULLUNIQUE,但我仍然很

mysql - REGEXP - 仅选择包含字母和句号的行

我一直在尝试编写此查询,我需要选择列中只有字母(a-z)和句号的行。我试过了,但没用:SELECT*FROMtableWHERE(c1REGEXP'[^a-zA-Z\.]')=0这个通常可以在PHP中运行。 最佳答案 尝试:SELECT*FROMtableWHEREc1REGEXP'^[a-zA-Z.]+$'anchor^和$确保您匹配的是整个字符串,而不是它的一部分。接下来字符类[a-zA-Z.]匹配单个大写/小写字母或句点。+是前一个子正则表达式的一个或多个重复的量词,因此在这种情况下,它允许我们匹配一个或多个句点或大写/小写字

PHP & MySQL : use a table for a filter list for another table

我有两个mysql表。一个是坏词列表,另一个是与坏词列表进行比较的表。本质上,我想过滤掉并返回一个行列表,其中包含在坏词表中没有ANY出现的词的域。一些示例表:坏词列表+----------+------------------+|id|words|+----------+------------------+|1|porn||2|sex|+----------+------------------+要比较的域表+----------+------------------+|id|domain|+----------+------------------+|56|google.com|

mysql - MySQL Regexp 是否支持 Unicode 匹配

有谁知道Mysql的regexp是否支持unicode?我一直在做一些研究,大多数博客等似乎表明存在问题或不受支持。我想知道是否最好将LIKE用于unicode模式匹配,将regexp用于ASCII增强模式匹配?我喜欢能够在字符串的开头或结尾搜索匹配项的想法,但如果正则表达式不支持unicode,那么如果我的文本是unicode,这可能会很困难。 最佳答案 DoesanyoneknowifMysql'sregexpsupportsunicode?I'vebeendoingsomeresearchandthemajorityofblo

MySQL REGEXP - 删除空格和非数字字符

我想在MySQL数据库中搜索电话号码。目前这个查询:SELECTpersonFROMpeopleWHEREphone_numberRLIKE'123456789'它不会找到:(123)456789(12)456789123456789etcetc在我的MySQL查询中,是否可以去除所有内容并只留下数字?我还想搜索删除所有空格,只留下数字和字符,还想删除所有字符,只留下数字和空格。不确定这一切有多简单。感谢您的帮助! 最佳答案 怎么样:SELECTperson,replace(replace(replace(replace(phone

sql - MySQL REGEXP 到 SQL Server

下面的MySQL表达式在SQLServer中的等效项是什么?...WHEREsomefieldREGEXP'^[[:blank:]]*ASD[[:blank:]]*$|^[[:blank:]]*ASD[[:blank:]]*[[.vertical-line.]]|[[.vertical-line.]][[:blank:]]*ASD[[:blank:]]*$|[[.vertical-line.]][[:blank:]]*ASD[[:blank:]]*[[.vertical-line.]]' 最佳答案 不幸的是,mssql中的正则表达式

mysql - 我如何在 MYSQL 中基于十六进制代码进行 REGEXP 搜索?

SELECTtitleFROMtagsWHEREtitleREGEXP'[\x20]'返回所有带x、2或0的东西;SELECTtitleFROMtagsWHEREtitleREGEXP'\x20'返回字面上为x20的所有内容我的实际用例是我想搜索任何可能不小心包含了控制字符的标签。 最佳答案 可能有更好的方法来做到这一点,但这是我想出的:SELECTtitleFROMtagsWHEREtitleREGEXPCONCAT('[',CHAR(1),'-',CHAR(31),']')请注意,这些是十进制字符值,而不是十六进制。我也想不出一

mysql - 哪个更好? mysql 的 LIKE 或 REGEXP?

我在一个语句中有一个带有LIKE和NOTLIKE的named_scope。与使用REGEXP相比,这在执行方面是否更快?named_scope:order_search,:order=>"nameLIKE'%urgent%'ANDnameNOTLIKE'%noturgent%'DESC,created_atDESC" 最佳答案 这是毫秒级的差异,无法察觉。除非您要处理极高的流量,否则这无关紧要。如果您的方法遇到性能问题,可能是因为您的表中有大量行。瓶颈不是LIKE(MySQL也支持REGEXP),而是你的表结构。无论如何,您应该继续

针对 REGEXP 的 Mysql 优化

这个查询(使用不同的名称而不是“jack”)在我的慢速查询日志中发生了很多次。为什么?Users表有很多字段(超过我选择的这三个字段)和大约40.000行。selectname,username,idfromUserswhere(nameREGEXP'[[::]]')or(usernameREGEXP'[[::]]')orderbynamelimit0,5;id是主要的和自增的。name有索引。username有唯一索引。有时需要3秒!如果我在MySQL上解释选择,我得到了这个:selecttype:SIMPLEtable:Userstype:indexpossiblekeys:NUL

MySql REGEXP 匹配两个逗号分隔的字符串

我有一个包含以下值的表:id|value|-----------------------1|1,2,5,8,12,20|2|11,25,26,28|-----------------------现在我想搜索一些逗号分隔的ID,例如上面的值列中的'1,3,6,7,11'例如SELECTidFROMtbl_nameWHEREvalueREGEXP'*someregexpgoesherecontaining1,3,6,7,11*'LIMIT1,0;SELECTidFROMtbl_nameWHEREvalueREGEXP'*someregexpgoesherecontaining3,6,27,