zoukankan      html  css  js  c++  java
  • 表中的一列值有字符和数字,如何将两者通过查询筛选出来

    方法有多种下面主要使用了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

  • 相关阅读:
    传输层——UDP报文头介绍
    传输层——TCP报文头介绍
    网络层——IP报文头介绍
    数据链路层——以太网包头介绍
    POJ2752 (Seek the Name, Seek the Fame,kmp)
    POJ2406 Power Strings
    HNOI2008 玩具装箱toy (BZOJ1010,斜率dp)
    Covered Walkway(HDU4258,dp斜率优化)
    HDU3507 Print Article
    POJ1821 Fence
  • 原文地址:https://www.cnblogs.com/lipera/p/6273063.html
Copyright © 2011-2022 走看看