【问题标题】:SQL - SELECT all the records limiited to certain charactersSQL - 选择限制为某些字符的所有记录
【发布时间】:2019-08-08 03:01:06
【问题描述】:

我对 SQL 很陌生,所以我迫切需要以下问题的支持:
我正在查询的表的一列包含很长和各种文本值:所以,我想将输出限制为某些类型。

我想获得相同的内容作为查询的输出,仅限于 [a-z][A-Z][0-9],例如:

  • 原表:Hello /% World, 2019
  • 结果查询:Hello World 2019

有人知道吗?

非常感谢

【问题讨论】:

    标签: sql select replace substring character


    【解决方案1】:

    最佳选择:删除所有特殊字符,不留空格

    SELECT REGEXP_REPLACE(your_column, '[^0-9A-Za-z]', '') AS newfield
    FROM tablename; 
    

    删除许多字符,为删除的相同数量的字符留出空格

    SELECT TRANSLATE(columnname,'!@#$%^&*()', 
    '          ' ) AS newfield
    FROM tablename;
    

    如果你只想替换一个字符

    SELECT REPLACE('columnname', '%', '') AS newfield
    From tablename;
    

    如果你正在寻找特别的东西(你想找到“Hello World 2019”这个词)

    Select ‘Hello World 2019' AS newfield
    From tablename
    WHERE columnname like ‘Hello%’ AND columnname like ‘%World%’ AND columnname like ‘%2019’;
    

    假设你好总是开始,2019 总是结束,你想要所有的字段。如果你想要其他领域,你可能也想要那些;喜欢,

    Select TableID, columnname, ‘Hello World 2019' AS newfield
    From tablename
    WHERE columnname like ‘Hello%’ AND columnname like ‘%World%’ AND columnname like ‘%2019’;
    

    【讨论】:

      【解决方案2】:

      假设支持regexp_replace

      regexp_replace(column, '[^a-zA-Z0-9]', '')
      

      【讨论】:

        【解决方案3】:
        $string = 'Hello /% World, 2019';
        

        从 PHP 字符串中去除除字母和数字之外的所有字符:

        $res = preg_replace("/[^a-zA-Z0-9]/", "", $string);
        

        去除除字母、数字和空格以外的所有字符:

        $res = preg_replace("/[^a-zA-Z0-9\s]/", "", $string);
        

        【讨论】:

          【解决方案4】:

          您没有提及您使用的是哪个 SQL 引擎,但大多数引擎都支持字符串函数 REPLACE,它可以使用空字符串替换您想要的任何字符以将其删除。您将不得不嵌套其中的几个以摆脱不同的字符。检查数据库引擎的文档以了解语法。 例如:

          SELECT REPLACE(REPLACE('Hello /% World, 2019, '/', ''), '%','')
          

          一般来说,我认为这不是数据库引擎的工作,您可以在表示层中完成。

          HTH

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2022-01-19
            • 1970-01-01
            • 2016-05-20
            • 2019-06-30
            • 1970-01-01
            • 2016-03-24
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多