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

  • 相关阅读:
    257. Binary Tree Paths
    324. Wiggle Sort II
    315. Count of Smaller Numbers After Self
    350. Intersection of Two Arrays II
    295. Find Median from Data Stream
    289. Game of Life
    287. Find the Duplicate Number
    279. Perfect Squares
    384. Shuffle an Array
    E
  • 原文地址:https://www.cnblogs.com/lipera/p/6273063.html
Copyright © 2011-2022 走看看