我正在尝试查找除数字值以外的所有记录,其中包括alphabets
charachters
。当我运行以下查询时,我需要此信息来确定我将从SUBSTR(COLUMN1,8,4)
存储的数据的数据类型:
select SUBSTR(COLUMN1,8,4)
from tmp_table
where REGEXP_LIKE (SUBSTR(COLUMN1,8,4),'[^0-9\x]+$');
我获得的查询结果如下:
918
922S
944
950N
953
958S
974
977A
994A
995
我还添加查询以显示查询使用的输入数据:
select column1
from tmp_xsttable
where REGEXP_LIKE (SUBSTR(COLUMN1,24,4),'[^0-9\x]+$');
我得到的数据是:
AHGLXST912 200701010000912 L000000000000000000NC0000 CA20070216 10
AHGLXST917 200501020000917 L000000000020071231NC000001CC20090805 10
AHGLXST918 200501020000918 L000000000020071231NC000001CC20090805 10
AHGLXST920A200501020000920AL000000000000000000NC000001CA20050130 64
AHGLXST921 193501010000921 L000000000000000000NH0000 DA20040901 30
AHGLXST921D193501010000921DL000000000000000000NH0000 DA20040901 30
AHGLXST922A192501010000922AL000000000000000000NC0000 CA20050311 64
AHGLXST922G192501010000922GL000000000020081231NC0000 CC20090805 44
AHGLXST922N200501020000922NL000000000000000000NC0000 CA20050517 74
AHGLXST922S193501010000922SL000000000000000000NH0000 CA20040901 10
以下是Column1
tmp_table
中的一些示例数据集:
AHGLXST01362007061700530136L000000057000000000YH0005 RA20070619110
AHGLXST01362011092500540136L000000057000000000YH0005 RA20110927110
AHGLXST01362014090700950136L000000057000000000YC0009 RA20140909110
AHGLXST01371973112800670137L000000026000000000YH0008 RC2004052011011
AHGLXST01372006010100640137L000000026020061005YC0008 RC2006102511011
AHGLXST01391988040600510139L000000080500000000YH0006 RC2004052021022
AHGLXST01392007061700550139L000000080520101113YC0005 RC20101214210
AHGLXST01401997071300560140L000000047400000000YH0006 RC2004052011011
AHGLXST01402006042900560140L000000047400000000YH0008 RA20060426110
AHGLXST01402007061700750140L000000047400000000YH0007 RA20070619110
我试图忽略数字记录,但我得到这些3位数的结果以及包含字母和字符的记录。如何更改REGEXP_LIKE以忽略所有数字?
答案 0 :(得分:1)
您在查询中执行的操作是获取SUBSTR(COLUMN1,8,4)
至少包含一个非数字字符的数据。我想你想要的更像是这样:
SELECT SUBSTR(column1, 8, 4)
FROM tmp_table
WHERE NOT REGEXP_LIKE(SUBSTR(column1, 8, 4), '\d');
上述查询将返回COLUMN1
的值不包含从第8个位置开始的四个字符中的数字的所有行(即字符8-11)。