oracle 空格字符查询与处理

查询 空格

--一定找的出来
select * FROM SUBSTORETASKDETAIL_DAY WHERE instr(year,' ')>0;

SELECT * FROM SUBSTORETASKSETDETAIL WHERE REGEXP_LIKE(year, '( )+');
--不一定找的出来
SELECT * FROM SUBSTORETASKSETDETAIL WHERE length(user_name) > length(trim(user_name));
SELECT * FROM SUBSTORETASKSETDETAIL WHERE substr(user_name,-1)=' ';

处理  1.replace 2.trim 3.

update sjzls.SUBSTORETASKSETDETAIL set YEAR=replace(YEAR,' ','');
update sjzls.SUBSTORETASKSETDETAIL set month=replace(month,' ','');

去掉左空格  

去掉右空格

去掉中间的空格

用Oracle的TRIM函数去除字符串首尾指定字符
去掉首尾空格

SELECT TRIM(' abc '), ltrim(' abc '), rtrim(' abc ') FROM dual;


去掉首尾的其他字符

SELECT /*TRIM(';a;b;c;'),*/ ltrim(';a;b;c;',';'), rtrim(';a;b;c;',';') FROM dual;

注意:无法使用TRIM(‘;a;b;c;’, ‘;’)的格式

但是TRIM()却有它自己的格式

SELECT TRIM(';' FROM ';a;b;c;'),

TRIM(leading ';' FROM ';a;b;c;'),

TRIM(trailing ';' FROM ';a;b;c;'),

TRIM(both ';' FROM ';a;b;c;')

FROM dual;
复制代码
去掉首尾多个字符

对于去除首尾多个字符的时候,需要特别注意的是,Oracle数据库会从字符串中扫描,移除掉去除集合中出现的每一个字符,直到遇到第一个不在去除集合中的字符为止,而不是去去掉去除集合中的字符串。

SELECT LTRIM('thetomsbthhe', 'the'),RTRIM('thetomsbthhe', 'the') FROM dual;

注意:TRIM(leading 'the' FROM 'thetomsbthhe')是不行的,此函数的截取集仅能包含一个字符。

原文地址:https://www.cnblogs.com/wcz666/p/13224109.html