表中的一列值有字符和数字,如何将两者通过查询筛选出来

Posted lipera

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了表中的一列值有字符和数字,如何将两者通过查询筛选出来相关的知识,希望对你有一定的参考价值。

方法有多种下面主要使用了Oracle自带的一个函数来实现

函数:TRANSLATE(string,from_str,to_str) 

函数介绍:返回将(所有出现的)from_str中的每个字符替换为to_str中的相应字符以后的string。

TRANSLATE 是 REPLACE 所提供的功能的一个超集。如果 from_str 比 to_str 长,那么在 from_str 中而不在 to_str 中的额外字符将从 string 中被删除,因为它们没有相应的替换字符。to_str 不能为空。Oracle 将空字符串解释为 NULL,并且如果TRANSLATE 中的任何参数为NULL,那么结果也是 NULL。 

筛选纯数字:

SELECT A.COL FROM A

WHERE TRANSLATE(A.COL,‘*0123456789‘,‘*‘) IS NULL;

 

TRANSLATE函数的其他应用:

1、将数字转换为1,其他的大写字母转换为X(大小写有区别),然后返回

SELECT TRANSLATE(‘8QKW119‘,‘0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ‘,‘9999999999XXXXXXXXXXXXXXXXXXXXXXXXXX‘)  "Translate example"FROM DUAL;

2、将数字保留,将其他的大写字母移除。

SELECT TRANSLATE(‘8QKW119‘,‘0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ‘,‘0123456789‘) "Translate example"FROM DUAL

3、示例证明TRANSLATE函数是按照字符来处理,不是按照字节来处理,如果to_string的字符数比from_string多的话,多出的字符数没有什么用处,也不会引发异常。

SELECT TRANSLATE(‘我是中国人,我爱中国‘, ‘中国‘, ‘China‘) "Translate example" FROM DUAL 

4、下面示例证明,如果from_string的字符数大于to_string,那么多出的字符会被移除

SELECT TRANSLATE(‘I am Chinese, I love China‘, ‘China‘, ‘中国‘) "Translate example"

FROM DUAL 

ina三个字符会从char参数中移除,当然区分大小写

5、以下示例证明,如果第二个参数为空字符串,整个返回null

SELECT TRANSLATE(‘8QKW119‘,

‘0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ‘,
‘‘) "License"
FROM DUAL

6、将名字进行替换,只保留最后的一个字 例如:“张晓亮”变为“**亮”

select translate(‘上官可文‘,SUBSTR(‘上官可文‘,1,LENGTH(‘上官可文‘)-1),lpad(‘*‘,LENGTH(‘上官可文‘)-1,‘*‘)) from dual

以上是关于表中的一列值有字符和数字,如何将两者通过查询筛选出来的主要内容,如果未能解决你的问题,请参考以下文章

python pandas中如何将dataframe中的一列字符串类型转换为浮点类型?

sql 查询某列值为 a和b

Sqlserver 中 如何筛选出 分组后成绩最大列的这一列

CodeIgniter 查询:如何将列值移动到同一行中的另一列并将当前时间保存在原始列中?

sql怎么把一个表的一列替换到对应的另一个表中对应的列?

EXCEL表一列数据中只筛选出“整数”或是“小数”怎么办????