oracle  一列里面包含汉字、字母、数字,我想通过语句来删除某项,语句怎么写的?
1、删除里面的汉字,其他保留。2、删除里面的字母,其他保留。3、删除里卖年的数字,其他保留。这三个语句分别是怎么写的,求解!

解决方案 »

  1.   

    select regexp_replace('123abc一二三 456def四五六','[[:digit:]]','') from dual;--替换所有数字为空值
    select regexp_replace('123abc一二三 456def四五六','[a-zA-Z]','') from dual;--替换所有字母为空值
    select regexp_replace('123abc一二三 456def四五六','[0-9a-zA-Z]','') from dual;--替换所有数字和字母为空值
    select regexp_replace('123abc一二三 456def四五六','[^0-9a-zA-Z]','') from dual;--保留所有数字和字母--结果
    REGEXP_REPLACE('123ABC一二三456DEF四五六','[[:DIGIT:]]','') 
    ----------------------------------------------------- 
    abc一二三 def四五六                                    REGEXP_REPLACE('123ABC一二三456DEF四五六','[A-ZA-Z]','') 
    -------------------------------------------------- 
    123一二三 456四五六                                 REGEXP_REPLACE('123ABC一二三456DEF四五六','[0-9A-ZA-Z]','') 
    ----------------------------------------------------- 
    一二三 四五六                                          REGEXP_REPLACE('123ABC一二三456DEF四五六','[^0-9A-ZA-Z]','') 
    ------------------------------------------------------ 
    123abc456def 
      

  2.   

    可以使用正则匹配 查询出汉字  字母 数字
    regexp_substr(col1,'[a-z,A-Z]+')