sql表达式模式匹配

时间:2011-10-07 17:13:52

标签: sql case teradata sql-like

我想在sql中检查一个模式,如果该表达式(或表格单元格)中除了数字之外还有任何内容它应该返回1.如果整个单元格只有数字值,它应该返回0

当量:

case when '200290' like [anything other than numbers]
then 1
else o

2 个答案:

答案 0 :(得分:2)

在SQL Server中,您可以使用类似的东西(我不会为您编写整个函数):

DECLARE @t varchar(100) = '231321321321'

SELECT CASE WHEN PATINDEX('%[^0-9]%', @t) > 0 THEN 1
            ELSE 0 END

答案 1 :(得分:0)

SELECT CASE CHARACTERS(OTRANSLATE(<your_string>,'a1234567890','a')) 
WHEN 0 THEN 0 ELSE 1 END;

例:

     -- BTEQ  Enter your SQL request or BTEQ command:
SELECT CASE CHARACTERS(OTRANSLATE('12345','a1234567890','a')) 
WHEN 0 THEN 0 ELSE 1 END;

*查询已完成。找到一排。一栏返回。  * 总耗用时间为1秒。

<CASE  expression>
------------------
                 0

SELECT CASE CHARACTERS(OTRANSLATE('1a23b45c','a1234567890','a')) WHEN 0 THEN 0 ELSE 1 END;

*查询已完成。找到一排。一栏返回。  * 总耗用时间为1秒。

<CASE  expression>
------------------
                 1