繁体   English   中英

“不包含数字”的SQL,是否可能?

[英]SQL where 'does not contain Numerics', is it possible?

我有一个充满行的表,每一行都有一个状态和一个序列ID(以及一堆超级秘密的东西,这里不重要)。 状态是指示记录当前状态的字符串,或者是指示具有该序列号的父级的子ID的id号,其将包含树的状态。 基本上我们的表包含树,其中父母持有状态信息,所有孩子都包含向上指针。 (我知道它的设计非常糟糕,但它是遗留的,不值得改变。)

首先,我需要的是列出所有家庭的所有状态及其序列ID。 所以我需要类似的东西

SELECT UNIQUE status, seq_id FROM top_secret_database.government_secrets_table 
WHERE status <does not contain numerics> 

有谁知道在sql中实现这一目标的方法?

我可以

SELECT UNIQUE status, seq_id FROM top_secret_database.government_secrets_table 
WHERE status NOT IN (
    SELECT UNIQUE seq_id FROM top_secret_database.government_secrets_table
)

但是在这一点上我只是好奇是否有任何方法可以获得任何人都知道的sql中的'not numerics'这样的正则表达式,因为这样做会很有用。 有什么建议么?

如果您知道可接受的数字状态ID范围,则可以使用Teradata本机CHAR2HEXINT()函数来确定列的第一个字符是字符还是数字。

SELECT CHAR2HEXINT('A')
     , CHAR2HEXINT('Z')
     , CHAR2HEXINT('0')
     , CHAR2HEXINT('1')
     , CHAR2HEXINT('9')
;

你没有说你正在使用的WHICH sql server,所以我将假设MySQL

SELECT ...
WHERE status NOT REGEXP '[0-9]'

如果状态是不包含数字的字符串或完全数字Id,则可以使用(至少在TSQL中) ISNUMERIC函数进行过滤。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM