oracle中如何取消列值中的空格

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle中如何取消列值中的空格相关的知识,希望对你有一定的参考价值。

我的表A中的C列数据构成是:汉字+英文字母,在汉字和英文字母中间位置存在空格,求SQL语句批量取消这些空格

update a set c=replace(c,' ');
两个单引号中间有个空格,它会把c列中存在的所有空格都删掉,慎用
参考技术A select trim(replace(col1,'\t','')) from tab1 参考技术B select replace(C,' ','') from A; 参考技术C select REPLACE( '测试 TEST', ' ', '') AS col from dual;

如何从 SQL 中的列值中提取特定部分(Redshift 平台)

【中文标题】如何从 SQL 中的列值中提取特定部分(Redshift 平台)【英文标题】:How to extract a specific part from a column value in SQL (Redshift platform) 【发布时间】:2018-03-01 06:28:24 【问题描述】:

我在 NAME 列中有值:

PROD_UPI_FIIT_20180101_121017.TXT
REG_ART_TQ_FIIT_20180203_091215.TXT
STORES_OR_NIIT_20180809_121709.TXT
TIRES_UI_PO_NIIT_20180104_070901.TXT

我必须写一个查询,以便我可以看到 3 列中的值,如下所示:

PROD_UPI_FIIT       20180101      121017
REG_ART_TQ_FIIT     20180203      091215
STORES_OR_NIIT      20180809      121709
TIRES_UI_PO_NIIT    20180104      070901

我使用 Redshift 数据库。

【问题讨论】:

你试过什么?你看过正则表达式吗? 我没有尝试过正则表达式,但有点复杂的逻辑,它正在工作,但我正在寻找其他替代方案 如果您已经有一些逻辑,请将其发布到您的问题中。它显示了您尝试过的内容。 【参考方案1】:

我不是 REDSHIFT 用户,但您应该能够通过使用 SPLIT_PART() 函数或 POSITION()、SUBSTRING() 和 REVERSE() 的组合来完成。

SELECT split_part(text, '_', 1) + '_' 
       + split_part(text, '_', 2) + '_'
       + split_part(text, '_', 3) as field1,
       split_part(text, '_', 4) as field2,
       split_part(text, '_', 5) as field3
FROM your_table;

我在本例中使用了 T-SQL,但 REDSHIFT 使用相同的函数,我假设日期长度 = 8 和时间长度 = 6。

declare @text varchar(100) = 'PROD_UPI_FIIT_20180101_121017.TXT';

select substring(@text, 0, len(@text) - 19) name,
       substring(@text, len(@text) - 18, 8) date,
       substring(@text, len(@text) - 9, 6) time
GO
姓名 |日期 |时间 :------------ | :------- | :----- PROD_UPI_FIIT | 20180101 | 121017

dbfiddle here

【讨论】:

是的,没错。谢谢你。在我的查询中,我使用了 split_part 但查询变得很大,所以我正在考虑其他替代方案..

以上是关于oracle中如何取消列值中的空格的主要内容,如果未能解决你的问题,请参考以下文章

oracle sql查询以获取没有空格的列值

JavaScript:如何从 JSON 字符串中删除除值中的空格之外的所有空格?

oracle怎么在数字列中添加空格

使用 Jade 呈现的 HTML 值中的额外空格

我们可以阻止 SQL Server 除了忽略值中的尾随空格吗

HTML 电话链接可以接受值中的空格吗?