Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL where';不包含数字';,可能吗?_Sql_Teradata - Fatal编程技术网

SQL where';不包含数字';,可能吗?

SQL where';不包含数字';,可能吗?,sql,teradata,Sql,Teradata,我有一个满是行的表,每行都有一个状态和一个序列id(还有一堆超级机密的东西,在这里并不重要)。状态可以是一个字符串,指示记录的当前状态,也可以是一个id号,指示它是具有该序列号的父项的子项,父项将包含树的状态。基本上,我们的表包含树,其中父级保存状态信息,所有子级包含向上指针。(我知道它的设计很糟糕,但它是传统的,还不值得改变。) 首先,我需要的是我们所有家庭的所有状态列表,以及他们的序列ID。所以我需要像这样的东西 SELECT UNIQUE status, seq_id FROM top_s

我有一个满是行的表,每行都有一个状态和一个序列id(还有一堆超级机密的东西,在这里并不重要)。状态可以是一个字符串,指示记录的当前状态,也可以是一个id号,指示它是具有该序列号的父项的子项,父项将包含树的状态。基本上,我们的表包含树,其中父级保存状态信息,所有子级包含向上指针。(我知道它的设计很糟糕,但它是传统的,还不值得改变。)

首先,我需要的是我们所有家庭的所有状态列表,以及他们的序列ID。所以我需要像这样的东西

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

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

您没有说您使用的是哪台sql server,所以我假设:


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

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

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

如果你能告诉我们这是什么数据库,它的Teradata,这往往是非常有限的…REGEX将在Teradata 14中提供。如果允许您将UDF添加到环境中,可以从Teradata Developer Exchange下载一些UDF,这些UDF为您提供IsNumeric()功能。
SELECT ...
WHERE status NOT REGEXP '[0-9]'
SELECT CHAR2HEXINT('A')
     , CHAR2HEXINT('Z')
     , CHAR2HEXINT('0')
     , CHAR2HEXINT('1')
     , CHAR2HEXINT('9')
;