【发布时间】:2010-07-11 13:34:46
【问题描述】:
我正在尝试查找某个列是否需要 TRIM 函数。
如何确定表中的该列是否有在实际数据之前或之后有空格的记录。
【问题讨论】:
-
你的意思是“空白”还是“空格”?前者包括标签,而接受的答案将无法处理。
我正在尝试查找某个列是否需要 TRIM 函数。
如何确定表中的该列是否有在实际数据之前或之后有空格的记录。
【问题讨论】:
那么为什么你不能使用以下来查找前导空格?我已经能够以这种方式识别带有前导空格的记录,并使用 '% ' 来查找尾随空格。
SELECT mycolumn
FROM my_table
WHERE mycolumn LIKE ' %'
我还使用以下内容删除了前导和尾随空格
Update My_table set Mycolumn = TRIM(Mycolumn)
这似乎工作得很好。
【讨论】:
一种快速而肮脏的方式
WHERE LENGTH(TRIM(COL1)) <> LENGTH(COL1)
【讨论】:
您可以使用TRIM 函数本身检查它,不是最有效但准确的:
Select *
From TableA
Where MyColumn <> TRIM(MyColumn)
虽然如果你检查然后转身修剪,你可能只想一开始就这样做,像这样:
Select TRIM(MyColumn) as TrimmedMyColumn
From TableA
【讨论】:
select data1, length(data1)-length(replace(data1,' ','')) from t;
【讨论】:
当 T$DSCA 表字段之一在末尾有尾随空格时,以下查询将检索行: SELECT * from TABLE_NAME A WHERE RAWTOHEX(SUBSTR(A.T$DSCA, LENGTH(T$DSCA),1)) ='A0' AND TRIM(T$DSCA) 不为空;
【讨论】:
您可以在 Oracle 中使用 regular expressions。
例子:
select * from your_table
where regexp_like(your_column, '^[ ]+.*')
or regexp_like(your_column, '.*[ ]+$')
【讨论】:
your_column LIKE ' %' OR your_column LIKE '% ' 我认为正则表达式需要是 ^[\s]+.* 以匹配所有空格