Oracle - 使用前导或尾随空格查找值

时间:2010-07-11 13:34:46

标签: sql oracle

我试图查找某个列是否需要TRIM函数。

如何确定表中的此列是否包含在实际数据之前或之后具有空格的记录。

6 个答案:

答案 0 :(得分:15)

您可以使用TRIM功能检查它,而不是最有效但最准确的功能:

Select *
From TableA
Where MyColumn <> TRIM(MyColumn)

虽然如果你正在检查然后转向修剪,你可能想要在第一时间这样做,就像这样:

Select TRIM(MyColumn) as TrimmedMyColumn
From TableA

答案 1 :(得分:8)

快速而肮脏的方式

WHERE LENGTH(TRIM(COL1)) <> LENGTH(COL1)

答案 2 :(得分:1)

您可以在Oracle中使用regular expressions

示例:

select * from your_table 
 where regexp_like(your_column, '^[ ]+.*')
    or regexp_like(your_column, '.*[ ]+$')

答案 3 :(得分:1)

那么为什么不能使用以下方法来查找前导空格?我已经能够通过这种方式识别带有前导空格的记录,并使用'%'来查找尾随空格。

SELECT mycolumn
FROM my_table
WHERE mycolumn LIKE ' %'

我还使用以下内容删除了前导和尾随空格

Update My_table set Mycolumn = TRIM(Mycolumn) 

似乎工作得很好。

答案 4 :(得分:-1)

select data1, length(data1)-length(replace(data1,' ','')) from t;

答案 5 :(得分:-1)

当表字段T $ DSCA中的一个在结尾处有尾随空格时,以下查询将检索行: SELECT *来自TABLE_NAME A WHERE RAWTOHEX(SUBSTR(A.T $ DSCA,LENGTH(T $ DSCA),1))=&#39; A0&#39; AND TRIM(T $ DSCA)不为空;