【问题标题】:Properly select actual non-alphanumeric characters in MySQL column在 MySQL 列中正确选择实际的非字母数字字符
【发布时间】:2015-01-22 23:08:00
【问题描述】:

我的 MySQL REGEXP SELECT 查询有一个奇怪的问题,我正在尝试选择包含非字母数字字符的行。我尝试了多种方法,它会匹配西里尔字符,但它不认为撇号和空格是非字母数字的。以下是我尝试过的查询:

SELECT * FROM `table` WHERE `name` REGEXP '^[^[:alnum:]]+$' LIMIT 0,10;

SELECT * FROM `table` WHERE `name` REGEXP '^[^a-z0-9]+$' LIMIT 0,10;

它们现在都没有返回任何内容,因为我已经替换了所有的西里尔字符,除了空格和撇号。我觉得我一定是做错了什么,因为 MySQL 将空格和撇号视为字母数字似乎太不合逻辑了。

【问题讨论】:

    标签: mysql regex


    【解决方案1】:

    你试过了吗:

    SELECT * FROM table WHERE name REGEXP "[^a-z0-9]+" LIMIT 0,10;
    

    【讨论】:

    • 这确实有效,我想也许我把最初的 ^ 和 $ 混淆了,因为它会跨越所有但我只扫描第一个和最后一个字符。非常感谢!
    • 是否也可以显示违规字符?我这里有一些俄语字符串,我想替换它们。当然,我使用的是带有俄语字符而不是字母数字的正则表达式,它可以找出哪些行有违规字符,但无法分辨哪些行是因为,你知道,处理不同的语言有时会有看起来完全相同的字符尽管不一样(例如 A 和 А 看起来一样,但第一个是拉丁文 A,第二个是西里尔文,所以它们是不同的字符)。
    猜你喜欢
    • 2016-05-22
    • 2016-09-27
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    • 2013-01-06
    • 2013-03-31
    • 2012-09-04
    • 2017-12-29
    相关资源
    最近更新 更多