SQL-选择限制为某些字符的所有记录

时间:2019-03-17 16:59:04

标签: sql select replace substring character

我对SQL还是很陌生,因此迫切需要以下方面的支持:
我要查询的表的其中一列包含非常长的文本值:因此,我只想将输出限制为某些类型。

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

  • 原始表格:你好/%世界,2019年
  • 结果查询: Hello World 2019

有人有什么主意吗?

非常感谢您

4 个答案:

答案 0 :(得分:0)

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

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

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

HTH

答案 1 :(得分:0)

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

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’;

假设“ Hello”始终是开头,而“ 2019”总是结尾,那么您需要所有字段。如果您需要其他字段,则可能也需要这些。喜欢,

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

答案 2 :(得分:0)

$string = 'Hello /% World, 2019';

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

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

除字母,数字和空格之外的所有字符都剥离:

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

答案 3 :(得分:0)

假设支持regexp_replace

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